Types

Types

Overview

Package entity contains type definitions for Kublr.

type AWSBlockDeviceMapping

AWSBlockDeviceMapping object for instance groups

type AWSBlockDeviceMapping struct {
    // DeviceName specifies name of the device within Amazon EC2
    DeviceName *string `json:"deviceName,omitempty" yaml:"deviceName,omitempty"`
    // Ebs is Elastic Block Storage volume information.
    Ebs *AwsEbsVolumeSpec `json:"ebs,omitempty" yaml:"ebs,omitempty"`
    // NoDevice suppresses the device mapping.
    NoDevice *bool `json:"noDevice,omitempty" yaml:"noDevice,omitempty"`
    // VirtualName is virtual name associated with the device.
    VirtualName *string `json:"virtualName,omitempty" yaml:"virtualName,omitempty"`
}

type AWSInstanceGroupLocationSpecGroupTypeEnum

AWSInstanceGroupLocationSpecGroupTypeEnum defines type of Instance Group in AWS.

type AWSInstanceGroupLocationSpecGroupTypeEnum string

type AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum

AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum defines load balancer tagging policy

type AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum string

type AWSLocationSpecNatModeEnum

AWSLocationSpecNatModeEnum defines NAT mode for AWS.

type AWSLocationSpecNatModeEnum string

type AWSLocationState

AWSLocationState represents state of AWS Location.

type AWSLocationState struct {
    CloudFormationStackID    string             `json:"cloudFormationStackId" yaml:"cloudFormationStackId"`
    LastChangeSetID          string             `json:"changeSetId" yaml:"changeSetId"`
    CloudFormationStackState string             `json:"cloudFormationStackState" yaml:"cloudFormationStackState"`
    LastStackEventID         string             `json:"lastStackEventId" yaml:"lastStackEventId"`
    FirstStackError          string             `json:"firstStackError" yaml:"firstStackError"`
    PrepareToRecreateStack   bool               `json:"prepareToRecreateStack" yaml:"prepareToRecreateStack"`
    TemplateBodyHash         string             `json:"templateBodyHash" yaml:"templateBodyHash"`
    SnapshotIDs              map[string]*string `json:"snapshotIds" yaml:"snapshotIds"`
}

type AcmeSpec

AcmeSpec is a spec for Let’s Encrypt ACME Protocol.

type AcmeSpec struct {
    // Enabled indicates if AMCE support is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
    // API URL Is an Let's Encrypt endpoint to use.
    APIURL *string `json:"apiUrl,omitempty" yaml:"apiUrl,omitempty"`
    // Email is an e-mail to use for.
    Email *string `json:"email,omitempty" yaml:"email,omitempty" bson:"email,omitempty"`
}

type AgentConfigMap

AgentConfigMap is a Kublr agent configuration flags

type AgentConfigMap map[string]interface{}

type AgentExtensionSpec

AgentExtensionSpec specifies a reference to a Kublr agent extension

type AgentExtensionSpec struct {
    // TgzURL specifies URL of a Kublr extension to use
    // +optional
    TgzURL *string `json:"tgzUrl,omitempty" yaml:"tgzUrl,omitempty"`

    // RepositorySecretRef specifies reference to the secret object containing username/password to access the extension repository
    // +optional
    RepositorySecretRef *string `json:"repositorySecretRef,omitempty" yaml:"repositorySecretRef,omitempty"`
}

type AgentExtensionsMap

AgentExtensionsMap a map of agent extensions

type AgentExtensionsMap map[string]AgentExtensionSpec

type AlertManagerSpec

AlertManagerSpec is a spec for AlertManager installation

type AlertManagerSpec struct {
    // Enabled indicates if AlertManager is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if storage is enabled.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
}

type AppFeatureSpec

AppFeatureSpec is a spec for application controller feature in cluster.

type AppFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    // Enabled indicates if this feature is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Namespace kubernetes namespace to which application controller will be installed.
    Namespace *string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}

type AwsAPIAccessKeySpec

AwsAPIAccessKeySpec defines AWS Access Key and Secret Key.

type AwsAPIAccessKeySpec struct {
    AccessKeyID     string `json:"accessKeyId" yaml:"accessKeyId"`
    SecretAccessKey string `json:"secretAccessKey" yaml:"secretAccessKey"`
    Partition       string `json:"partition,omitempty" yaml:"partition,omitempty"`
}

type AwsCloudWatchLogSinkSpec

AwsCloudWatchLogSinkSpec is a spec for log sink in AWS CloudWatch.

type AwsCloudWatchLogSinkSpec struct {
    // Enabled indicates if this sink is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
}

type AwsEbsVolumeSpec

AwsEbsVolumeSpec is a spec for EBS volume.

type AwsEbsVolumeSpec struct {
    // Type specifies type of the volume. See EBS Volume Types.
    Type *string `json:"type,omitempty" yaml:"type,omitempty"`
    // Size determines size of the volume, in GBs.
    Size *int64 `json:"size,omitempty" yaml:"size,omitempty"`
    // Iops specifies required iops for the volume. Valiod only for Volume type with provisioned iops.
    Iops *int64 `json:"iops,omitempty" yaml:"iops,omitempty"`
    // Encrypted flag indicates if EBS volume should be encrypted.
    Encrypted *bool `json:"encrypted,omitempty" yaml:"encrypted,omitempty"`
    // KmsKeyID The Amazon Resource Name (ARN) of the AWS Key Management Service master key that is used to create the
    // encrypted volume, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
    // If you create an encrypted volume and don’t specify this property, AWS CloudFormation uses the default master key.
    //+optional
    KmsKeyID *string `json:"kmsKeyId,omitempty" yaml:"kmsKeyId,omitempty"`
    // SnapshotID is AWS Snapshot ID to create EBS volume from
    SnapshotID *string `json:"snapshotId,omitempty" yaml:"snapshotId,omitempty" bson:"snapshotId,omitempty"`
    // DeleteOnTermination property for ASG EBS mapping volumes
    DeleteOnTermination *bool `json:"deleteOnTermination,omitempty" yaml:"deleteOnTermination,omitempty"`
}

type AwsEipAllocationPolicyEnum

AwsEipAllocationPolicyEnum -

type AwsEipAllocationPolicyEnum string

type AwsInstanceGroupLocationSpec

AwsInstanceGroupLocationSpec is a spec for instance group location in AWS. It maps to auto-scaling group with a launch configuration.

type AwsInstanceGroupLocationSpec struct {
    // GroupType is a type of underlying structure supporting this group.
    // Currently 'asg' and 'elastigroup' are supported;
    // default value is 'asg'
    GroupType *AWSInstanceGroupLocationSpecGroupTypeEnum `json:"groupType,omitempty" yaml:"groupType,omitempty" bson:"groupType"`

    // SSHKey is a name of AWS SSH Key Pair used to access instances in the group.
    SSHKey *string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`

    // PinToZone is 'pin' if instances must be pinned to a single AZ from the list, or 'span' if no pinning is necessary.
    // 'default' is the same as 'pin' for stateful groups and 'span' for stateless.
    PinToZone *InstanceGroupLocationSpecPinToZoneTypeEnum `json:"pinToZone,omitempty" yaml:"pinToZone,omitempty"`

    // AvailabilityZones is list of AZs that can be used in the location.
    // If omitted, generator will automatically assign it to all available zones.
    //+optional
    AvailabilityZones   []*string         `valid:"required" json:"availabilityZones,omitempty" yaml:"availabilityZones,omitempty"`
    InstanceType        *string           `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`
    OverrideImageID     *string           `json:"overrideImageId,omitempty" yaml:"overrideImageId,omitempty"`
    ImageID             *string           `json:"imageId,omitempty" yaml:"imageId,omitempty"`
    ImageRootDeviceName *string           `json:"imageRootDeviceName,omitempty" yaml:"imageRootDeviceName,omitempty"`
    RootVolume          *AwsEbsVolumeSpec `json:"rootVolume,omitempty" yaml:"rootVolume,omitempty"`
    MasterVolume        *AwsEbsVolumeSpec `json:"masterVolume,omitempty" yaml:"masterVolume,omitempty"`

    // MasterNlbAllocationPolicy allocation policy for master NLB.
    //
    // Allowed values: 'none', 'private', 'public', 'privateAndPublic', 'auto' ('public' for multi-master,
    // and 'none' for single-master), or 'default' (same as 'auto', deprecated)
    //
    // By default (value empty):
    //   - set to 'auto' for new clusters created by Kublr 1.20+
    //   - set to 'none' for clusters created before Kublr 1.20 and updated in in Kublr 1.20+
    //
    // The property is ignored in non-master instance groups.
    MasterNlbAllocationPolicy *MasterELBAllocationPolicyEnum `json:"masterNlbAllocationPolicy,omitempty" yaml:"masterNlbAllocationPolicy,omitempty"`

    // MasterElbAllocationPolicy allocation policy for master NLB.
    //
    // Allowed values: 'none', 'private', 'public', 'privateAndPublic', 'auto' ('public' for multi-master,
    // and 'none' for single-master), or 'default' (same as 'auto', deprecated)
    //
    // By default (value empty):
    //   - set to 'none' for new clusters created by Kublr 1.20 and later
    //   - set to 'auto' for clusters created before Kublr 1.20 and updated in in Kublr 1.20+
    //
    // The property is ignored in non-master instance groups.
    //
    // @deprecated use NLB instead of ELB
    MasterElbAllocationPolicy *MasterELBAllocationPolicyEnum `json:"masterElbAllocationPolicy,omitempty" yaml:"masterElbAllocationPolicy,omitempty"`

    // MasterEipAllocationPolicy master EIP allocation policy: 'default' ('none' for multi-master, and 'public' for single-master), 'none', or 'public'.
    //
    // The property is ignored in non-master instance groups.
    //
    // @deprecated the property is ignored if `eipAllocationPolicy` is defined, use `eipAllocationPolicy` instead
    MasterEipAllocationPolicy *AwsEipAllocationPolicyEnum `json:"masterEipAllocationPolicy,omitempty" yaml:"masterEipAllocationPolicy,omitempty"`

    // NodeIPAllocationPolicy is Instance IP allocation policy - 'default' (same as 'privateAndPublic'), 'private', or 'privateAndPublic'.
    NodeIPAllocationPolicy *NodeIPAllocationPolicyEnum `json:"nodeIpAllocationPolicy,omitempty" yaml:"nodeIpAllocationPolicy,omitempty"`

    // EipAllocationPolicy Groups EIP allocation policy - 'default', 'none', or 'public'.
    //
    // 'default' means:
    // - 'none' for multi-master groups (note that master groups are always stateful)
    // - 'none' for single-master groups with nodeIpAllocationPolicy==='private'
    // - 'public' for single-master groups with nodeIpAllocationPolicy!=='private'
    // - 'none' for stateful node groups with nodeIpAllocationPolicy==='private'
    // - 'public' for stateful node groups with nodeIpAllocationPolicy!=='private'
    // - 'none' for non-stateful node groups
    //
    // Constraints:
    // - eipAllocationPolicy may not be 'public' if nodeIpAllocationPolicy==='private'
    // - eipAllocationPolicy may not be 'public' if the group is not stateful
    EipAllocationPolicy *AwsEipAllocationPolicyEnum `json:"eipAllocationPolicy,omitempty" yaml:"eipAllocationPolicy,omitempty"`

    // InstanceMonitoring controls whether instances in this group are launched with detailed monitoring or not.
    // detailed monitoring for EC2 instances by default will be disabled
    // default value 'false'
    // Do not set omitempty flag because it affects behavior.
    InstanceMonitoring *bool `json:"instanceMonitoring,omitempty" yaml:"instanceMonitoring,omitempty"`

    // Cooldown AWS AutoScalingGroup parameter
    Cooldown *string `json:"cooldown,omitempty" yaml:"cooldown,omitempty"`
    // LoadBalancerNames names of additional load balancers to associate with the instance group's
    // autoscaling group
    LoadBalancerNames []interface{} `json:"loadBalancerNames,omitempty" yaml:"loadBalancerNames,omitempty"`
    // TargetGroupARNs ARNs of the target groups to associate with the instance group's autoscaling group
    TargetGroupARNs []interface{} `json:"targetGroupARNs,omitempty" yaml:"targetGroupARNs,omitempty"`

    // AWS LaunchConfiguration parameters:
    //  - BlockDeviceMappings
    //  - EbsOptimized
    //  - InstanceMonitoring
    //  - PlacementTenancy
    //  - SpotPrice
    BlockDeviceMappings []*AWSBlockDeviceMapping `json:"blockDeviceMappings,omitempty" yaml:"blockDeviceMappings,omitempty"`
    // EbsOptimized specifies whether the instance is optimized for Amazon EBS I/O
    EbsOptimized *bool `json:"ebsOptimized,omitempty" yaml:"ebsOptimized,omitempty"`

    // PlacementTenancy specifies the tenancy of the instance. It can be either default or dedicated.
    PlacementTenancy *string `json:"placementTenancy,omitempty" yaml:"placementTenancy,omitempty"`
    // SpotPrice specifies the price to bid when launching Spot Instances.
    SpotPrice *string `json:"spotPrice,omitempty" yaml:"spotPrice,omitempty"`

    // SubnetIds IDs of subnets to be used for this instance group.
    //
    // If omitted, subnets will be created to accommodate this instance group, otherwise corresponding autoscaling group
    // will be assigned to the specified subnets.
    //
    // Subnets must be specified corresponding to each AZ in availabilityZones array, so that for example, if
    // `availabilityZones == ['us-east1a', 'us-east-1c', 'us-east-1d']` and
    // `subnetIds == ['subnet1', '', 'subnet3']`, then generator will assume that `subnet1` exist in AZ `us-east-1a`,
    // `subnet3` exists in `us-east-1d`, and it will create a new subnet in `us-east-1c`.
    //
    // Note also that if a subnet id is specified in a certain position of `subnetIds` array, a correct
    // AZ in which this subnet is located MUST also be specified in corresponding position of `availabilityZones`
    // array.
    //
    // SubnetIds values may be string IDs of specific subnets, or objects allowed for inclusion into
    // a Cloudformation stack templates, such as `{ Ref: MySubnet }`
    SubnetIds []interface{} `json:"subnetIds,omitempty" yaml:"subnetIds,omitempty"`

    // PrivateMasterPublicLbSubnetIds IDs of subnets to use for public ELB and/or NLB of private master instances.
    //
    // If omitted, subnets will be created when necessary.
    //
    // These subnets are only necessary for public ELB and/or NLB to have access to private masters.
    // This property will be ignored in any other situation (e.g. this is a non-master group, or the group is
    // public, or no public ELB or NLB is needed).
    //
    // privateMasterPublicLbSubnetIds values may be string IDs of specific subnets, or objects allowed for inclusion into
    // a Cloudformation stack templates, such as `{ Ref: MySubnet }`
    //
    // Note also that if a subnet ID is specified in a certain position of `privateMasterPublicLbSubnetIds` array,
    // a correct AZ in which this subnet is located MUST also be specified in corresponding position of
    // `availabilityZones` array.
    PrivateMasterPublicLbSubnetIds []interface{} `json:"privateMasterPublicLbSubnetIds,omitempty" yaml:"privateMasterPublicLbSubnetIds,omitempty"`

    // ExistingSecurityGroupIds are in addition to security groups specified in `existingSecurityGroupIds`
    // property in `AWSLocationSpec` object.
    //
    // GroupId of existing security groups that need to be added to this node group instances.
    // These security groups are in addition to security groups specified in `existingSecurityGroupIds`
    // property in `AWSLocationSpec` object.
    //
    // existingSecurityGroupIds values may be string IDs of specific security groups, or objects
    // allowed for inclusion into a Cloudformation stack templates, such as `{ Ref: MySG }`
    ExistingSecurityGroupIds []interface{} `json:"existingSecurityGroupIds,omitempty" yaml:"existingSecurityGroupIds,omitempty"`

    // Elastigroup is a specification of elastigroup.
    // +optional if groupType != 'elastigroup'
    Elastigroup *ElastigroupSpec `json:"elastigroup,omitempty" yaml:"elastigroup,omitempty"`

    // CloudFormation custom properties
    ASGCloudFormationExtras                           StringMap `json:"asgCloudFormationExtras,omitempty" yaml:"asgCloudFormationExtras,omitempty"`
    ASGPropertiesCloudFormationExtras                 StringMap `json:"asgPropertiesCloudFormationExtras,omitempty" yaml:"asgPropertiesCloudFormationExtras,omitempty"`
    LaunchConfigurationPropertiesCloudFormationExtras StringMap `json:"launchConfigurationPropertiesCloudFormationExtras,omitempty" yaml:"launchConfigurationPropertiesCloudFormationExtras,omitempty"`
    LaunchTemplateDataCloudFormationExtras            StringMap `json:"launchTemplateDataCloudFormationExtras,omitempty" yaml:"launchTemplateDataCloudFormationExtras,omitempty"`
    MixedInstancesPolicyCloudFormationExtras          StringMap `json:"mixedInstancesPolicyCloudFormationExtras,omitempty" yaml:"mixedInstancesPolicyCloudFormationExtras,omitempty"`
}

type AwsLocationAvailabilityZoneSpec

AwsLocationAvailabilityZoneSpec specifies Kublr generator behavior for resources created within an AZ (such as subnets for example)

type AwsLocationAvailabilityZoneSpec struct {
    // specify Kublr generator behavior for subnets of different type created with an AZ
    SubnetMasterPublic  *AwsLocationAvailabilityZoneSubnetSpec `json:"subnetMasterPublic,omitempty" yaml:"subnetMasterPublic,omitempty"`
    SubnetMasterPrivate *AwsLocationAvailabilityZoneSubnetSpec `json:"subnetMasterPrivate,omitempty" yaml:"subnetMasterPrivate,omitempty"`
    SubnetNodePublic    *AwsLocationAvailabilityZoneSubnetSpec `json:"subnetNodePublic,omitempty" yaml:"subnetNodePublic,omitempty"`
    SubnetNodePrivate   *AwsLocationAvailabilityZoneSubnetSpec `json:"subnetNodePrivate,omitempty" yaml:"subnetNodePrivate,omitempty"`
    SubnetOtherPublic   *AwsLocationAvailabilityZoneSubnetSpec `json:"subnetOtherPublic,omitempty" yaml:"subnetOtherPublic,omitempty"`
}

type AwsLocationAvailabilityZoneSubnetSpec

AwsLocationAvailabilityZoneSubnetSpec specify Kublr generator behavior for a subnet

type AwsLocationAvailabilityZoneSubnetSpec struct {
    // tagging policy for the subnet for LoadBalancer Services
    ServiceLoadBalancerPublicPolicy   *AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum `json:"serviceLoadBalancerPublicPolicy,omitempty" yaml:"serviceLoadBalancerPublicPolicy,omitempty"`
    ServiceLoadBalancerInternalPolicy *AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum `json:"serviceLoadBalancerInternalPolicy,omitempty" yaml:"serviceLoadBalancerInternalPolicy,omitempty"`
}

type AwsLocationSpec

AwsLocationSpec is a spec for AWS Location.

type AwsLocationSpec struct {
    // AwsAPIAccessSecretRef is a reference to the secret object containing AWS access key and secret key to access this
    // location
    AwsAPIAccessSecretRef *string `json:"awsApiAccessSecretRef,omitempty" yaml:"awsApiAccessSecretRef,omitempty"`

    // AccountID is AWS accountId
    // If omitted, it will be populated automatically based on the secret.
    // If specified, it must correspond to the account specified in the secret.
    //+optional
    AccountID *string `json:"accountId,omitempty" yaml:"accountId,omitempty"`

    // Region is AWS region
    // If omitted, it will be populated automatically based on the secret.
    //+optional
    Region *string `json:"region,omitempty" yaml:"region,omitempty"`

    //VpcID is ID of the VPC to use.
    // If omitted, a new VPC will be created, otherwise existing VPC will be used.
    //+optional
    VpcID *string `json:"vpcId,omitempty" yaml:"vpcId,omitempty"`

    // VpcCIDRBlock is an IP address range for instances in this VPC.
    //*If omitted, one of 16 standard private /16 IP ranges (172.16.0.0/16, ... , 172.31.0.0/16) will be assigned.
    //+optional
    VpcCIDRBlock *string `json:"vpcCidrBlock,omitempty" yaml:"vpcCidrBlock,omitempty"`

    // AvailabilityZones are AWS region availability zones to be used for Kubernetes cluster in this location.
    // If omitted, it will be populated automatically to all zones available for this account in this region.
    //+optional
    AvailabilityZones []*string `valid:"required" json:"availabilityZones,omitempty" yaml:"availabilityZones,omitempty"`

    // MasterCIDRBlocks See cidrBlocks property instead
    // @deprecated
    MasterCIDRBlocks []*string `json:"masterCIDRBlocks,omitempty" yaml:"masterCIDRBlocks,omitempty"`

    // NodesCIDRBlocks See cidrBlocks property instead
    // @deprecated
    NodesCIDRBlocks []*string `json:"nodesCIDRBlocks,omitempty" yaml:"nodesCIDRBlocks,omitempty"`

    // PublicSubnetCidrBlocks See cidrBlocks property instead
    // @deprecated
    PublicSubnetCidrBlocks []*string `json:"publicSubnetCidrBlocks,omitempty" yaml:"publicSubnetCidrBlocks,omitempty"`

    // CidrBlocks is CIDR block allocation for various purpose subnets in this location.
    //
    // This replaces deprecated properties masterCIDRBlocks, nodesCIDRBlocks, and publicSubnetCidrBlocks
    //
    // CIDR blocks in the following arrays are specified according to availability zone indices.
    //
    // Availability zone index is the index of the zone in the list of all possible zones in this region, ordered in a standard
    // lexicographical order. E.g. zones 'us-east-1a', 'us-east-1c', and 'us-east-1d' have indices 0, 2, and 3 correspondingly.
    //
    // Therefore, for example, if three public masters are defined, and two masters are placed in the zone 'us-east-1b' (zone
    // index is 1) and one master is placed in the zone 'us-east-1d' (zone index is 3), then at least the following CIDRs
    // must be specified:
    //
    // masterPublic:
    //   - ''
    //   - '<cidr for master subnet in zone us-east-1b>'
    //   - ''
    //   - '<cidr for master subnet in zone us-east-1d>'
    //
    // Each value in these arrays must either be a valid CIDR or an empty string (if unused or undefined).
    //
    // Generator will use its own set of rules when trying to specify CIDR blocks that are needed but undefined in the spec.
    // It will not try to adjust these rules to accomodate user-specified CIDR's.
    //
    // Automatic CIDR generation rules on an example of 172.16.0.0/16 global CIDR:
    //  - 172.16.0.0/17 - reserved for public subnets
    //    - 172.16.0.0/20 - reserved for public master and other subnets
    //      - 172.16.0.0/23 - reserved for various non-master/auxilary public subnets
    //        - 172.16.0.0/26 - reserved
    //        - 172.16.0.64/26, ... , 172.16.1.192/26 - allocated for otherPublic (zones 0, 1, ... , 6) (7 * 64 IPs)
    //      - 172.16.2.0/23, ... , 172.16.14.0/23 - allocated for masterPublic (zones 0, 1, ... , 6) (7 * 512 IPs)
    //    - 172.16.16.0/20, ... , 172.16.112.0/20 - allocated for nodePublic (zones 0, 1, ... , 6) (7 * 16K IPs)
    //  - 172.16.128.0/17 - reserved for private subnets
    //    - 172.16.128.0/20 - reserved for private master and other subnets
    //      - 172.16.128.0/23 - reserved for various non-master/auxilary private subnets
    //      - 172.16.130.0/23, ... , 172.16.142.0/23 - allocated for masterPrivate (zones 0, 1, ... , 6) (7 * 512 IPs)
    //    - 172.16.144.0/20, ... , 172.16.240.0/20 - allocated for nodePrivate (zones 0, 1, ... , 6) (7 * 16K IPs)
    CidrBlocks *AwsLocationSpecCidrBlocks `json:"cidrBlocks,omitempty" yaml:"cidrBlocks,omitempty"`

    // IamRoleMasterPathName is a master role path name
    IamRoleMasterPathName *string `json:"iamRoleMasterPathName,omitempty" yaml:"iamRoleMasterPathName,omitempty"`

    // IamInstanceProfileMasterPathName is a master instance profile path name
    IamInstanceProfileMasterPathName *string `json:"iamInstanceProfileMasterPathName,omitempty" yaml:"iamInstanceProfileMasterPathName,omitempty"`

    // IamRoleNodePathName is a node role path name
    IamRoleNodePathName *string `json:"iamRoleNodePathName,omitempty" yaml:"iamRoleNodePathName,omitempty"`

    // IamInstanceProfileNodePathName is a node instance profile path name
    IamInstanceProfileNodePathName *string `json:"iamInstanceProfileNodePathName,omitempty" yaml:"iamInstanceProfileNodePathName,omitempty"`

    // IamRoleMasterCloudFormationExtras additional parameters (policies, statements) for masters IAM role
    IamRoleMasterCloudFormationExtras interface{} `json:"iamRoleMasterCloudFormationExtras,omitempty" yaml:"iamRoleMasterCloudFormationExtras,omitempty"`

    // IamRoleNodeCloudFormationExtras additional parameters (policies, statements) for workers IAM role
    IamRoleNodeCloudFormationExtras interface{} `json:"iamRoleNodeCloudFormationExtras,omitempty" yaml:"iamRoleNodeCloudFormationExtras,omitempty"`

    // EnableTerminationProtection protects the AWS stack from deletion
    // this flag is used when creating a stack
    EnableTerminationProtection *bool `json:"enableTerminationProtection,omitempty" yaml:"enableTerminationProtection,omitempty" bson:"enableTerminationProtection,omitempty"`

    // SkipSecurityGroupNode flag indicates if creating default security groups should be skipped
    SkipSecurityGroupDefault *bool `json:"skipSecurityGroupDefault,omitempty" yaml:"skipSecurityGroupDefault,omitempty" bson:"skipSecurityGroupDefault,omitempty"`
    // SkipSecurityGroupNode flag indicates if creating security groups of master should be skipped
    SkipSecurityGroupMaster *bool `json:"skipSecurityGroupMaster,omitempty" yaml:"skipSecurityGroupMaster,omitempty" bson:"skipSecurityGroupMaster,omitempty"`
    // SkipSecurityGroupNode flag indicates if creating security groups of node should be skipped
    SkipSecurityGroupNode *bool `json:"skipSecurityGroupNode,omitempty" yaml:"skipSecurityGroupNode,omitempty" bson:"skipSecurityGroupNode,omitempty"`

    // ExistingSecurityGroupIds GroupId of existing security groups that need to be added to all instances.
    //
    // More security groups may be added to specific node groups by specifying additional
    // GroupIds in `existingSecurityGroupIds` property of specific groups' `AWSInstanceGroupLocationSpec`
    // objects.
    //
    // existingSecurityGroupIds values may be string IDs of specific security groups, or objects
    // allowed for inclusion into a Cloudformation stack templates, such as `{ Ref: MySG }`
    ExistingSecurityGroupIds []interface{} `json:"existingSecurityGroupIds,omitempty" yaml:"existingSecurityGroupIds,omitempty"`

    // ResourcesCloudFormationExtras additional CloudFormation resources to be included in the cloudformation stack
    ResourcesCloudFormationExtras StringMap `json:"resourcesCloudFormationExtras,omitempty" yaml:"resourcesCloudFormationExtras,omitempty"`

    // SkipPublicSubnetsForPrivateGroups flag indicates that creation of default empty public subnets for
    // private node groups should be avoided.
    //
    // By default Kublr creates an empty public subnet for each AZ in which there is at least one
    // private node group. CIDRs for such public subnets are taken from cidrBlocks.otherPublic property.
    //
    // These public subnets are necessary for public ELB created by Kubernetes for Services of type
    // LoadBalancer to be able to connect to worker nodes running in private subnets in corresponding
    // AZs.
    //
    // Note that even if skipPublicSubnetsForPrivateGroups === true, public subnets may still be created
    // for NAT gateways for private master and/or worker groups;
    //
    // Public master subnets will also be created for private master groups if masterElbAllocationPolicy
    // or masterNlbAllocationPolicy requires public load blancer.
    //
    // Therefore it is only possible to fully disable public subnet creation in clusters with:
    // 1. all master and worker groups set to private
    // 2. masterElbAllocationPolicy and masterNlbAllocationPolicy that do not require public load
    //    balancer (none, private, or default in single-master cluster)
    // 3. natMode === 'none'
    // 4. skipPublicSubnetsForPrivateGroups === true
    SkipPublicSubnetsForPrivateGroups *bool `json:"skipPublicSubnetsForPrivateGroups,omitempty" yaml:"skipPublicSubnetsForPrivateGroups,omitempty"`

    // NatMode can be 'legacy', 'multi-zone' or 'none' (default: 'multi-zone' for new clusters, 'legacy' for
    // pre-existing ones):
    // 1. 'legacy' mode is supported for compatibility with AWS clusters created by pre-1.19 Kublr releases;
    // 2. 'multi-zone' mode is the default for all new clusters.
    // 3. 'none' mode is used to avoid automatic creation of NAT gateways.
    //
    // Migration from 'legacy' to 'multi-zone' is possible but may affect the cluster public egress addresses,
    // requires manual operation, and cannot be easily rolled back.
    //
    // With 'legacy' NAT mode only one NAT gateway is created in one of the availability zone, which is not
    // AZ fault tolerant. Public subnet used for the NAT gateway in 'legacy' mode can change depending on the
    // configuration of master and worker node groups, which may prevent CloudFormation stack from updating in
    // some situation.
    //
    // With 'multi-zone' NAT mode by default a NAT gateway is created for each AZ in which private node groups are
    // present.
    // It is also possible to only create NAT gateways in some AZs, and to specify which NAT gateways should be used
    // by which specific private subnets.
    // NAT gateways created in 'multi-zone' mode also do not create any issues with any configuration changes in
    // the clusters, thus never preventing CloudFormation stacks from updating.
    NatMode *AWSLocationSpecNatModeEnum `json:"natMode,omitempty" yaml:"natMode,omitempty"`

    // AZs for NAT gateways (default: undefined).
    //
    // Kublr creates one private subnet for each AZ in which there are/is (a) private node group(s).
    // Such private subnets require a NAT gateway created in a public subnet.
    // The NAT gateway does not have to be in the same AZ, but if the NAT gateway is in a different AZ,
    // the private subnet internet accessibility is vulnerable to the NAT gateway AZ failures.
    //
    // By default Kublr will create NAT gateway in each AZ with private node groups.
    //
    // natAvailabilityZones property allows overriding this behavior. When natAvailabilityZones
    // property is specified, for each AZ `availabilityZones[i]` NAT gateway from the AZ
    // `natAvailabilityZones[i % len(natAvailabilityZones)]` will be used.
    //
    // So for example:
    // 1. if `natAvailabilityZones == ['us-east-1c']`, then a single NAT gateway in AZ 'us-east-1c'
    //    will be used for all private subnets.
    // 2. if `natAvailabilityZones == ['us-east-1c', 'us-east-1a']`, and
    //    `availabilityZones == ['us-east-1a', 'us-east-1b', 'us-east-1d']` then NAT gateways in AZs
    //    'us-east-1c', 'us-east-1a', and 'us-east-1c' (again) will be used for private subnets in AZs
    //    'us-east-1a', 'us-east-1b', and 'us-east-1d' correspondingly.
    // 3. if `natAvailabilityZones` is undefined, null or empty, NAT gateways will be created in each
    //    AZ with private subnets and private subnet in each AZ will be setup with a NAT gateway in
    //    the same AZ.
    NatAvailabilityZones []*string `json:"natAvailabilityZones,omitempty" yaml:"natAvailabilityZones,omitempty"`

    // AvailabilityZoneSpec map allows to specify Kublr generator behavior for resources created per AZ (such as
    // subnets for example).
    AvailabilityZoneSpec map[string]*AwsLocationAvailabilityZoneSpec `json:"availabilityZoneSpec,omitempty" yaml:"availabilityZoneSpec,omitempty"`

    // SkipInternetGateway skip creating AWS Internet Gateway for the VPC.
    // Kublr by default automatically creates an AWS Internet Gateway for the VPC (if VPC is created).
    // In some situations it is not desirable or allowed, in which case this property can be used
    // to skip automatic Internet Gateway creation.
    SkipInternetGateway *bool `json:"skipInternetGateway,omitempty" yaml:"skipInternetGateway,omitempty"`
}

type AwsLocationSpecCidrBlocks

AwsLocationSpecCidrBlocks defines CIDR block allocation for various purpose subnets in this location.

type AwsLocationSpecCidrBlocks struct {
    // MasterPublic defines CIDR blocks for subnets used for public master groups
    // +optional
    MasterPublic []*string `json:"masterPublic,omitempty" yaml:"masterPublic,omitempty"`
    // MasterPrivate defines CIDR blocks for subnets used for private master groups
    // +optional
    MasterPrivate []*string `json:"masterPrivate,omitempty" yaml:"masterPrivate,omitempty"`
    // NodePublic defines CIDR blocks for subnets used for public node groups
    // +optional
    NodePublic []*string `json:"nodePublic,omitempty" yaml:"nodePublic,omitempty"`
    // NodePrivate defines CIDR blocks for subnets used for private node groups
    // +optional
    NodePrivate []*string `json:"nodePrivate,omitempty" yaml:"nodePrivate,omitempty"`
    // OtherPublic defines CIDR blocks used for public subnets necessary for other purposes (e.g. placing NAT and bastion host in situation
    //when no other public subnets exist)
    // +optional
    OtherPublic []*string `json:"otherPublic,omitempty" yaml:"otherPublic,omitempty"`
}

type AwsS3SecretStoreSpec

AwsS3SecretStoreSpec is a spec for secret store in Amazon S3 Bucket.

type AwsS3SecretStoreSpec struct {
    // LocationRef a reference to an AWS location where the bucket will be created
    LocationRef string `json:"locationRef" yaml:"locationRef"`

    // S3BucketName S3 bucket name.
    // If left empty, the name will be gnerated randomly and stored in the spec.
    S3BucketName *string `json:"s3BucketName,omitempty" yaml:"s3BucketName,omitempty"`

    // SecretExchangeBucketCloudFormationExtras additional CloudFormation S3 bucket resource
    // properties that will be added into the S3 bucket CloudFormation resource as is.
    SecretExchangeBucketCloudFormationExtras interface{} `json:"secretExchangeBucketCloudFormationExtras,omitempty" yaml:"secretExchangeBucketCloudFormationExtras,omitempty"`
}

type AwsVolumeSnapshot

AwsVolumeSnapshot - Amazon volume snapshot

type AwsVolumeSnapshot struct {
    EbsVolumeID string `json:"ebsVolumeId" yaml:"ebsVolumeId" bson:"ebsVolumeId"`
    SnapshotID  string `json:"snapshotId" yaml:"snapshotId" bson:"snapshotId"`
    AccountID   string `json:"accountId" yaml:"accountId" bson:"accountId"`
    // used in cluster restoration process
    OriginalEbsVolumeID string `json:"originalEbsVolumeId" yaml:"originalEbsVolumeId" bson:"originalEbsVolumeId"`
}

type AzureAPIAccessKey

AzureAPIAccessKey defines Azure credentials.

type AzureAPIAccessKey struct {
    TenantID        string `json:"tenantId" yaml:"tenantId"`
    SubscriptionID  string `json:"subscriptionId" yaml:"subscriptionId"`
    AadClientID     string `json:"aadClientId" yaml:"aadClientId"`
    AadClientSecret string `json:"aadClientSecret" yaml:"aadClientSecret"`
}

type AzureASSecretStoreSpec

AzureASSecretStoreSpec is a spec for secret store in Azure Account Storage.

type AzureASSecretStoreSpec struct {
    // current implementation automatically generate the new!
    // name of container with secrets by next rule concat(deployment().name + 'secrets'.
    // It could be changed in future for some static value secretsContainerName?: string;
    LocationRef string `json:"locationRef" yaml:"locationRef"`
    // UseExisting should use an existing secret store
    UseExisting *bool `json:"useExisting,omitempty" yaml:"useExisting,omitempty"`
    // If omitted, a new Storage Account, otherwise existing will be used
    // +optional
    StorageAccountName *string `json:"storageAccountName,omitempty" yaml:"storageAccountName,omitempty"`
    // If omitted, a new  Storage Container under Storage Account will be created, otherwise existing will be used
    // +optional
    StorageContainerName *string `json:"storageContainerName,omitempty" yaml:"storageContainerName,omitempty"`
}

type AzureDataDiskSpec

AzureDataDiskSpec is a Data disk specification

type AzureDataDiskSpec struct {
    // Lun specifies the logical unit number (LUN) for the data drive in the virtual machine.
    // Each data disk must have a unique LUN.
    Lun *int `json:"lun,omitempty" yaml:"lun,omitempty"`
    // DiskSizeGB specifies the data disk size, in gigabytes.
    DiskSizeGB *int `json:"diskSizeGb,omitempty" yaml:"diskSizeGb,omitempty"`
}

type AzureDiskSpec

AzureDiskSpec is a spec for method creation VM in Azure.

type AzureDiskSpec struct {
    Type               *string `json:"type,omitempty" yaml:"type,omitempty"`
    ImageID            *string `json:"imageId,omitempty" yaml:"imageId,omitempty"`
    ImageResourceGroup *string `json:"imageResourceGroup,omitempty" yaml:"imageResourceGroup,omitempty"`
    ImagePublisher     *string `json:"imagePublisher,omitempty" yaml:"imagePublisher,omitempty"`
    ImageOffer         *string `json:"imageOffer,omitempty" yaml:"imageOffer,omitempty"`
    ImageVersion       *string `json:"imageVersion,omitempty" yaml:"imageVersion,omitempty"`
    SourceURI          *string `json:"sourceUri,omitempty" yaml:"sourceUri,omitempty"`
    // DiskSizeGB specifies the disk size, in gigabytes.
    DiskSizeGB *int `json:"diskSizeGb,omitempty" yaml:"diskSizeGb,omitempty"`
}

type AzureInstanceGroupLocationSpec

AzureInstanceGroupLocationSpec is a spec for instance group location in Azure.

type AzureInstanceGroupLocationSpec struct {
    // SSHKeySecretRef reference to the secret object containing public SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    SSHKey          *string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`
    SSHUsername     *string `json:"sshUsername,omitempty" yaml:"sshUsername,omitempty"`
    // IsAvailabilitySet indicates usage of Azure availability set
    IsAvailabilitySet *bool   `json:"isAvailabilitySet,omitempty" yaml:"isAvailabilitySet,omitempty"`
    InstanceType      *string `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`
    // OsDisk describes OS disk
    OsDisk *AzureDiskSpec `json:"osDisk,omitempty" yaml:"osDisk,omitempty"`
    // MasterDataDisk describes master Data disk
    MasterDataDisk *AzureDataDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`
    // MasterLBAllocationPolicy Master LB allocation policy.
    // Must be one of:
    //  - AzureMasterLBAllocationPolicyPrivate: Use both 'public' and 'private' LB
    //  - AzureMasterLBAllocationPolicy: Use only 'private' LB
    // If omitted - AzureMasterLBAllocationPolicyPrivate will be used.
    MasterLBAllocationPolicy *AzureMasterLBAllocationPolicy `json:"masterLBAllocationPolicy,omitempty" yaml:"masterLBAllocationPolicy,omitempty"`
}

type AzureLocationSpec

AzureLocationSpec is a spec for Azure Location.

type AzureLocationSpec struct {
    // AzureAPIAccessSecretRef is a reference to the secret object containing Azure secrets to access location
    AzureAPIAccessSecretRef *string `json:"azureApiAccessSecretRef,omitempty" yaml:"azureApiAccessSecretRef,omitempty"`

    // AzureSSHKeySecretRef is a reference to the secret object containing public SSH key
    AzureSSHKeySecretRef *string `json:"azureSshKeySecretRef,omitempty" yaml:"azureSshKeySecretRef,omitempty"`

    // Azure aadClientId
    AadClientID *string `json:"aadClientId,omitempty" yaml:"aadClientId,omitempty"`

    // Region is Azure region
    Region *string `json:"region,omitempty" yaml:"region,omitempty"`

    // Azure Resource Group
    // If omitted, a new Resource Group will be created, otherwise existing will be used
    //+optional
    ResourceGroup *string `json:"resourceGroup,omitempty" yaml:"resourceGroup,omitempty"`

    // Azure Network Security Group
    // If omitted, a new Network Security Group will be created, otherwise existing will be used
    //+optional
    NetworkSecurityGroup *string `json:"networkSecurityGroup,omitempty" yaml:"networkSecurityGroup,omitempty"`

    // Azure Route Table
    // If omitted, a new Route Table will be created, otherwise existing will be used
    //+optional
    RouteTable *string `json:"routeTable,omitempty" yaml:"routeTable,omitempty"`

    // Azure Storage Account type (i.e. Standard_LRS, Premium_LRS and etc)
    // If omitted - default will be used.
    StorageAccountType *string `json:"storageAccountType,omitempty" yaml:"storageAccountType,omitempty"`

    // Azure Virtual Network
    // If omitted, a new Virtual Network will be created, otherwise existing will be used
    //+optional
    VirtualNetwork *string `json:"virtualNetwork,omitempty" yaml:"virtualNetwork,omitempty"`

    // Azure Virtual Network Subnet
    // If omitted, a new Virtual Network Subnet will be created, otherwise existing will be used
    //+optional
    VirtualNetworkSubnet *string `json:"virtualNetworkSubnet,omitempty" yaml:"virtualNetworkSubnet,omitempty"`

    // Ip address range for instances in this Virtual Network Subnet
    // If omitted - default will be assigned
    //+optional
    VirtualNetworkSubnetCidrBlock *string `json:"virtualNetworkSubnetCidrBlock,omitempty" yaml:"virtualNetworkSubnetCidrBlock,omitempty"`

    // RouteTableRaw is a definition of Azure Route Tables to pass to ARM Deployment.
    //+optional
    RouteTableRaw map[string]interface{} `json:"routeTableRaw,omitempty" yaml:"routeTableRaw,omitempty"`

    // ArmTemplateResourcesExtra is additional ARM resources. Will be added to main Azure template without any modification.
    // Using to extend Azure ARM template in case if we need to deploy Azure resources to the same deployment as Kublr's resources
    //+optional
    ArmTemplateResourcesExtra []interface{} `json:"armTemplateResourcesExtra,omitempty" yaml:"armTemplateResourcesExtra,omitempty"`
}

type AzureLocationState

AzureLocationState represents state of Azure Location.

type AzureLocationState struct {
    ResourceGroupName           string                        `json:"resourceGroupName" yaml:"resourceGroupName"`
    DeploymentName              string                        `json:"deploymentName" yaml:"deploymentName"`
    DeploymentProvisioningState string                        `json:"deploymentProvisioningState" yaml:"deploymentProvisioningState"`
    FirstStackError             string                        `json:"firstStackError" yaml:"firstStackError"`
    Resources                   map[ResourceID]*ResourceState `json:"resources" yaml:"resources"`
}

type AzureLocationUpdateState

AzureLocationUpdateState represents state of Azure Location update state.

type AzureLocationUpdateState struct {
    UpdateStage UpdateStage `json:"updateStage" yaml:"updateStage"`
    Victims     Victims     `json:"victims" yaml:"victims"`
}

type AzureMasterLBAllocationPolicy

AzureMasterLBAllocationPolicy is a Master LB allocation policy (i.e ‘privateAndPublic’, ‘private’ and etc)

type AzureMasterLBAllocationPolicy string

type Backup

Backup – backup model

type Backup struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    // Deprecated: need use OwnerReference
    ClusterID   string       `json:"clusterId" yaml:"clusterId" bson:"clusterId"`
    Spec        BackupSpec   `json:"spec" yaml:"spec" bson:"spec"`
    ClusterSpec ClusterSpec  `json:"clusterSpec" yaml:"clusterSpec" bson:"clusterSpec"`
    TotalSize   int64        `json:"totalSize" yaml:"totalSize" bson:"totalSize"`
    FinishedAt  time.Time    `json:"finishedAt" yaml:"finishedAt" bson:"finishedAt"`
    Status      BackupStatus `json:"status" yaml:"status" bson:"status"`
}

type BackupConfiguration

BackupConfiguration - backup configuration model

type BackupConfiguration struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    ScheduleConfig []ScheduleInterval `json:"scheduleConfig" yaml:"scheduleConfig" bson:"scheduleConfig"`
    Enabled        bool               `json:"enabled" yaml:"enabled" bson:"enabled"`
    DryRun         bool               `json:"dryRun" yaml:"dryRun" bson:"dryRun"`
}

type BackupConfigurationListResult

BackupConfigurationListResult - creates list for backup configuration

type BackupConfigurationListResult struct {
    Total int                   `json:"total" yaml:"total" bson:"total"`
    Items []BackupConfiguration `json:"items" yaml:"items" bson:"items"`
}

type BackupListResult

BackupListResult holds Backups.

type BackupListResult struct {
    Total int      `json:"total" yaml:"total" bson:"total"`
    Items []Backup `json:"items" yaml:"items" bson:"items"`
}

type BackupSpec

BackupSpec – backup specification

type BackupSpec struct {
    MasterDisksSnapshots            []VolumeSnapshot `json:"masterDisksSnapshots" yaml:"masterDisksSnapshots" bson:"masterDisksSnapshots"`
    PersistentVolumesSnapshots      []VolumeSnapshot `json:"persistentVolumesSnapshots" yaml:"persistentVolumesSnapshots" bson:"persistentVolumesSnapshots"`
    PersistentVolumeClaimsSnapshots []VolumeSnapshot `json:"persistentVolumeClaimsSnapshots" yaml:"persistentVolumeClaimsSnapshots" bson:"persistentVolumeClaimsSnapshots"`
}

type BackupStats

BackupStats is the backup status of the cluster

type BackupStats struct {
    ClusterID         string    `json:"clusterId" yaml:"clusterId" bson:"clusterId"`
    ClusterName       string    `json:"clusterName" yaml:"clusterName" bson:"clusterName"`
    LastSuccessBackup time.Time `json:"lastSuccessBackup" yaml:"lastSuccessBackup" bson:"lastSuccessBackup"`
    NumberOfBackups   int       `json:"numberOfBackups" yaml:"numberOfBackups" bson:"numberOfBackups"`
}

type BackupStatus

BackupStatus status

type BackupStatus string

type BaremetalInstanceGroupLocationSpec

BaremetalInstanceGroupLocationSpec is a spec for instance group location.

type BaremetalInstanceGroupLocationSpec struct {
    // Hosts is a list of hosts in the current instance group location.
    //+optional
    Hosts []*HostSpec `json:"hosts,omitempty" yaml:"hosts,omitempty"`
    //load balancing address for apiserver of kubernetes
    //+optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty"`
    // Reference to the secret object containing private SSH key for instance group
    // Can be overridden for host in HostSpec
    // Secret Reference type: SSHPrivateKeySpec
    //+optional
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    // Username to connect to ssh for instance group
    // Username is used to connect via SSH with certificate
    // Can be overridden for host in HostSpec
    //+optional
    Username *string `json:"username,omitempty" yaml:"username,omitempty"`
    // SSHUserPassSecretRef is a secret reference that contains username and password credentials for all nodes in this instance group
    // This secret is used to connect via SSH and to execute sudo commands with password
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SSHUserPassSecretRef *string `json:"sshUserPassSecretRef,omitempty" yaml:"sshUserPassSecretRef,omitempty" bson:"sshUserPassSecretRef,omitempty"`
    // SuUserPassSecretRef is a secret reference containing credentials for a username and password for installation without sudo via su
    // This secret is used to execute commands via su
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SuUserPassSecretRef *string `json:"suUserPassSecretRef,omitempty" yaml:"suUserPassSecretRef,omitempty" bson:"suUserPassSecretRef,omitempty"`
}

type BaremetalInstanceGroupLocationState

BaremetalInstanceGroupLocationState - location state for group

type BaremetalInstanceGroupLocationState struct {
    InstanceGroupRef string      `json:"instanceGroupRef" yaml:"instanceGroupRef"`
    HostStates       []HostState `json:"hostStates,omitempty" yaml:"hostStates,omitempty"`
    // Deprecated: kublr agent provides node state information
    RegisteredHosts    int `json:"registeredHosts" yaml:"registeredHosts"`
    MinRegisteredHosts int `json:"minRegisteredHosts" yaml:"minRegisteredHosts"`
    // Deprecated: kublr agent provides node state information
    DeregisteredHosts int             `json:"deregisteredHosts" yaml:"deregisteredHosts"`
    InitCommand       []InitCommand   `json:"initCommand,omitempty" yaml:"initCommand,omitempty"`
    RemoveCommand     []RemoveCommand `json:"removeCommand,omitempty" yaml:"removeCommand,omitempty"`
    // Reference to the secret object containing private SSH key for instance group
    // This SSH key is used to remove a node from the cluster via ssh.
    // Can be overridden for host in HostState
    // Secret Reference type: SSHPrivateKeySpec
    //+optional
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty" bson:"sshKeySecretRef,omitempty"`
    // SSHUserPassSecretRef is a secret reference that contains username and password credentials for all nodes in this instance group
    // This secret is used to connect via SSH and to execute sudo commands with password
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SSHUserPassSecretRef *string `json:"sshUserPassSecretRef,omitempty" yaml:"sshUserPassSecretRef,omitempty" bson:"sshUserPassSecretRef,omitempty"`
    // SuUserPassSecretRef is a secret reference containing credentials for a username and password for removing without sudo via su
    // This secret is used to execute commands via su
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SuUserPassSecretRef *string `json:"suUserPassSecretRef,omitempty" yaml:"suUserPassSecretRef,omitempty" bson:"suUserPassSecretRef,omitempty"`
    // Username to connect to ssh for instance group
    // This Username is used to remove a node from the cluster via SSH with certificate.
    // Can be overridden for host in HostState
    // Secret Reference type: SSHPrivateKeySpec
    //+optional
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
}

type BaremetalLocationSpec

BaremetalLocationSpec holds location specification for bare metal installations.

type BaremetalLocationSpec struct {
}

type BaremetalLocationState

BaremetalLocationState represents state of Baremetal location.

type BaremetalLocationState struct {
    InstanceGroupStates []BaremetalInstanceGroupLocationState `json:"instanceGroupStates,omitempty" yaml:"instanceGroupStates,omitempty"`
}

type BaremetalSecretStoreSpec

BaremetalSecretStoreSpec - Spec for bare-metal secret storage. this spec is empty. @deprecated use KublrAgentSecretStoreSpec instead

type BaremetalSecretStoreSpec struct {
}

type CentralLoggingSinkSpec

CentralLoggingSinkSpec is a spec for self-hosted cluster wide logging.

type CentralLoggingSinkSpec struct {
    // Enabled indicates if this sink is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if EL storage is persistent.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size definesGenerate certificate for jwks size of the storage for elasticsearch in platform, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
    // MasterNodes is the number of master nodes that control the cluster.
    // number of master nodes is must not be 2, need to use 1 or 3 and more
    MasterNodes *int `json:"masterNodes,omitempty" yaml:"masterNodes,omitempty" bson:"masterNodes"`
    // DataNodes is the number of data nodes that hold data and perform data related operations such as CRUD, search, and aggregations.
    DataNodes *int `json:"dataNodes,omitempty" yaml:"dataNodes,omitempty" bson:"dataNodes"`
    // ClientNodes is the number of client nodes which serve client requests.
    ClientNodes *int `json:"clientNodes,omitempty" yaml:"clientNodes,omitempty" bson:"clientNodes"`
    // LogstashReplicas is the number of logstash which transfer logs from logsmover/rabbitmq to elasticsearch.
    LogstashReplicas *int `json:"logstashReplicas,omitempty" yaml:"logstashReplicas,omitempty" bson:"logstashReplicas,omitempty"`
    // RetentionPeriodDays represents how old (in days) should be an Elasticsearch index to be deleted by Curator
    RetentionPeriodDays *int `json:"retentionPeriodDays,omitempty" yaml:"retentionPeriodDays,omitempty" bson:"retentionPeriodDays,omitempty"`
}

type Chart

Chart is a helm package

type Chart struct {
    // The name of the chart
    Name *string `json:"name,omitempty" yaml:"name,omitempty"`
    // RepoURL is address of helm repository
    RepoURL *string `json:"repoUrl,omitempty" yaml:"repoUrl,omitempty"`
    // Version of the chart
    Version *string `json:"version,omitempty" yaml:"version,omitempty"`
    // ChartPullSecret is a reference to kublr secret for accessing the chart repo
    ChartPullSecret *string `json:"chartPullSecret,omitempty" yaml:"chartPullSecret,omitempty" bson:"chartPullSecret,omitempty"`
}

type ChartValues

ChartValues represents helm chart values

type ChartValues map[string]interface{}

type Cluster

Cluster is a definition of cluster.

type Cluster struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Spec is cluster specification.
    Spec ClusterSpec `valid:"required" json:"spec" yaml:"spec"`
    // Status hold cluster state.
    Status ClusterState `valid:"" json:"status,omitempty" yaml:"status,omitempty"`

    // Owner is an owner for cluster.
    Owner *Owner `json:"owner,omitempty" yaml:"owner,omitempty"`

    // Deleted indicates whether cluster was removed
    Deleted bool `json:"deleted" yaml:"deleted" default:"false"`
}

type ClusterBackupDetails

ClusterBackupDetails - details for backup

type ClusterBackupDetails struct {
    Cluster           Cluster   `json:"cluster" yaml:"cluster" bson:"cluster"`
    LastSuccessBackup time.Time `json:"lastSuccessBackup" yaml:"lastSuccessBackup" bson:"lastSuccessBackup"`
    NumberOfBackups   int       `json:"numberOfBackups" yaml:"numberOfBackups" bson:"numberOfBackups"`
    BackupEnabled     bool      `json:"backupEnabled" yaml:"backupEnabled" bson:"backupEnabled"`
}

type ClusterBackupDetailsListResult

ClusterBackupDetailsListResult - result for backup details list

type ClusterBackupDetailsListResult struct {
    Total int                    `json:"total" yaml:"total" bson:"total"`
    Items []ClusterBackupDetails `json:"items" yaml:"items" bson:"items"`
}

type ClusterFeaturesSpec

ClusterFeaturesSpec is a spec for cluster-wide features.

type ClusterFeaturesSpec struct {
    KublrOperator *KublrOperatorSpec       `json:"kublrOperator,omitempty" yaml:"kublrOperator,omitempty" bson:"kublrOperator,omitempty"`
    System        *SystemFeatureSpec       `json:"system,omitempty" yaml:"system,omitempty"`
    Logging       *ClusterLoggingSpec      `json:"logging,omitempty" yaml:"logging,omitempty"`
    Monitoring    *ClusterMonitoringSpec   `json:"monitoring,omitempty" yaml:"monitoring,omitempty"`
    Ingress       *ClusterIngressSpec      `json:"ingress,omitempty" yaml:"ingress,omitempty"`
    ControlPlane  *ControlPlaneFeatureSpec `json:"controlPlane,omitempty" yaml:"controlPlane,omitempty"`
    AppFeature    *AppFeatureSpec          `json:"appFeature,omitempty" yaml:"appFeature,omitempty"`
    Kubedb        *KubeDbFeatureSpec       `json:"kubedb,omitempty" yaml:"kubedb,omitempty" bson:"kubedb,omitempty"`
}

type ClusterIngressControllerSpec

ClusterIngressControllerSpec is a spec for cluster-wide ingress controller.

type ClusterIngressControllerSpec struct {
    Nginx *NginxClusterIngressControllerSpec `json:"nginx,omitempty" yaml:"nginx,omitempty" bson:"nginx,omitempty"`
}

type ClusterIngressSpec

ClusterIngressSpec is a spec for Ingress in cluster.

type ClusterIngressSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    IngressControllers []*ClusterIngressControllerSpec `json:"ingressControllers,omitempty" yaml:"ingressControllers,omitempty"`
}

type ClusterListResult

ClusterListResult holds clusters.

type ClusterListResult struct {
    Total int       `json:"total" yaml:"total"`
    Items []Cluster `json:"items" yaml:"items"`
}

type ClusterLogCollectionSpec

ClusterLogCollectionSpec is a spec for cluster log collection.

type ClusterLogCollectionSpec struct {
    // Enabled is a flag indicating if log collection is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
}

type ClusterLogSinksSpec

ClusterLogSinksSpec is a spec for Cluster wide log sinks.

type ClusterLogSinksSpec struct {
    SelfHosted     *SelfHostedClusterLogSinkSpec `json:"selfHosted,omitempty" yaml:"selfHosted,omitempty"`
    AwsCloudWatch  *AwsCloudWatchLogSinkSpec     `json:"awsCloudWatch,omitempty" yaml:"awsCloudWatch,omitempty"`
    CentralLogging *CentralLoggingSinkSpec       `json:"centralLogging,omitempty" yaml:"centralLogging,omitempty"`
}

type ClusterLoggingSpec

ClusterLoggingSpec is a spec for cluster wide logging.

type ClusterLoggingSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    LogCollection *ClusterLogCollectionSpec `json:"logCollection,omitempty" yaml:"logCollection,omitempty"`
    Sinks         []*ClusterLogSinksSpec    `json:"sinks,omitempty" yaml:"sinks,omitempty"`
    // StorageHostPath is host path for persistent logging data
    // This directory will be used for clusters that doesn't have dynamic volume provision.
    // Default value: /var/lib/kublr/logging
    // Deprecated: configure node path for local host provisioner
    StorageHostPath *string `json:"storageHostPath,omitempty" yaml:"storageHostPath,omitempty" bson:"storageHostPath,omitempty"`
}

type ClusterMonitoringSpec

ClusterMonitoringSpec is a spec for cluster wide monitoring.

type ClusterMonitoringSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    Enabled        *bool                         `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    Platform       *MonitoringPlatformSpec       `json:"platform,omitempty" yaml:"platform,omitempty"`
    PlatformClient *MonitoringPlatformClientSpec `json:"platformClient,omitempty" yaml:"platformClient,omitempty"`
    SelfHosted     *MonitoringSelfHostedSpec     `json:"selfHosted,omitempty" yaml:"selfHosted,omitempty"`
    // StorageHostPath is host path for persistent monitoring data
    // This directory will be used for clusters that doesn't have dynamic volume provision.
    // Default value: /var/lib/kublr/monitoring
    // Deprecated: configure node path for local host provisioner
    StorageHostPath *string `json:"storageHostPath,omitempty" yaml:"storageHostPath,omitempty" bson:"storageHostPath,omitempty"`

    // StatsCollection is a stats collection spec
    // Deprecated kept here just for backward compatibility
    StatsCollection *ClusterStatsCollectionSpec `json:"statsCollection,omitempty" yaml:"statsCollection,omitempty"`
}

type ClusterPackageSpec

ClusterPackageSpec is a specification of helm package that should be installed to cluster

type ClusterPackageSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`
    // ReleaseName is the release name of package
    ReleaseName string `json:"releaseName" yaml:"releaseName" bson:"releaseName"`
    // Namespace kubernetes namespace to which application controller will be installed.
    Namespace string `json:"namespace" yaml:"namespace" bson:"namespace"`
    // HelmVersion is helm version. available values: v2, v3
    HelmVersion string `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty" bson:"helmVersion,omitempty"`
}

type ClusterPackageState

ClusterPackageState is a state of cluster package

type ClusterPackageState struct {
    // ReleaseName is the release name of package
    ReleaseName string `json:"releaseName" yaml:"releaseName" bson:"releaseName"`
    // Namespace kubernetes namespace to which application controller will be installed.
    Namespace string `json:"namespace" yaml:"namespace" bson:"namespace"`
    // ReleaseStatus is the status as given by Helm for the release
    ReleaseStatus string `json:"releaseStatus" yaml:"releaseStatus" bson:"releaseStatus"`
    // Version is the version of the installed feature
    Version string `json:"version" yaml:"version"`
    // SpecSha256Sum is the SHA256 checksum for the installed resource
    Sha256Sum string `json:"sha256sum" yaml:"sha256sum" bson:"sha256sum"`
    // ActualSha256Sum is the SHA256 checksum from the real resource in the target cluster
    ActualSha256Sum string `json:"actualSha256sum" yaml:"actualSha256sum" bson:"actualSha256sum"`
    // Conditions contains observations of the resource's state, e.g.,
    // has the chart which it refers to been fetched.
    Conditions []FeatureCondition `json:"conditions,omitempty" yaml:"conditions,omitempty" bson:"conditions,omitempty"`
}

type ClusterPackagesSpec

ClusterPackagesSpec is a specification of all cluster packages map structure uses for simple patch-merge operations key is a unique value: “${namespace}/${releaseName}”

type ClusterPackagesSpec map[string]*ClusterPackageSpec

type ClusterRollingUpdateSpec

ClusterRollingUpdateSpec controls the desired behavior of rolling update.

type ClusterRollingUpdateSpec struct {
    // The maximum number of instance groups that can be updated at one moment.
    // Defaults to 1.
    // +optional
    MaxUpdatedGroups *int `json:"maxUpdatedGroups,omitempty" yaml:"maxUpdatedGroups,omitempty" bson:"maxUpdatedGroups,omitempty"`
}

type ClusterSpec

ClusterSpec is a specification of the cluster.

type ClusterSpec struct {
    // ControlPlaneAPI Kubernetes control plane spec; Mainly used for external clusters
    ControlPlaneAPI *ControlPlaneAPISpec `json:"controlPlaneApi,omitempty" yaml:"controlPlaneApi,omitempty"`

    // KublrVersion allows to specify which version of kublr to use.
    KublrVersion *string `json:"kublrVersion,omitempty" yaml:"kublrVersion,omitempty"`
    // KublrBranch allows to specify which branch to use for cluster.
    // Deprecated, ignored
    KublrBranch *string `json:"kublrBranch,omitempty" yaml:"kublrBranch,omitempty"`

    // KublrAgentRepositoryUsername specifies username to download kublr agent.
    // Deprecated: use KublrAgentRepositorySecretRef instead
    // +optional
    KublrAgentRepositoryUsername *string `json:"kublrAgentRepositoryUsername,omitempty" yaml:"kublrAgentRepositoryUsername,omitempty"`
    // KublrAgentRepositoryPassword specifies password to download kublr agent.
    // Deprecated: use KublrAgentRepositorySecretRef instead
    // +optional
    KublrAgentRepositoryPassword *string `json:"kublrAgentRepositoryPassword,omitempty" yaml:"kublrAgentRepositoryPassword,omitempty"`

    DockerRegistry *DockerRegistrySpec `json:"dockerRegistry,omitempty" yaml:"dockerRegistry,omitempty"`
    // Locations specifies locations where cluster should be installed.
    Locations []*LocationSpec `json:"locations,omitempty" yaml:"locations,omitempty"`
    // Network is a specification of network.
    Network *NetworkSpec `json:"network,omitempty" yaml:"network,omitempty"`
    // Master is a spec for instance group used for kubernetes master nodes.
    Master *InstanceGroupSpec `json:"master,omitempty" yaml:"master,omitempty"`
    // Nodes is a slice with specs for instance groups used for worker nodes.
    Nodes []*InstanceGroupSpec `json:"nodes,omitempty" yaml:"nodes,omitempty"`
    // Features is a specification of cluster features.
    Features *ClusterFeaturesSpec `json:"features,omitempty" yaml:"features,omitempty"`
    // Packages is a specification of helm chart
    Packages *ClusterPackagesSpec `json:"packages,omitempty" yaml:"packages,omitempty" bson:"packages,omitempty"`
    // SecretStore is a spec for secret store.
    SecretStore *SecretStoreSpec `json:"secretStore,omitempty" yaml:"secretStore,omitempty"`
    // UpdateStrategy is used to update existing instance groups
    // +optional
    UpdateStrategy *ClusterUpdateStrategySpec `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty" bson:"updateStrategy,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters overridable in LocationSpec, InstanceGroupSpec, and InstanceGroupLocationSpec
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`
}

type ClusterState

ClusterState represents status of the cluster. TODO: Should be renamed to ClusterStatus

type ClusterState struct {
    CreateRequested  time.Time `json:"createRequested" yaml:"createRequested"`
    Created          time.Time `json:"created" yaml:"created"`
    UpdateRequested  time.Time `json:"updateRequested" yaml:"updateRequested"`
    Updated          time.Time `json:"updated" yaml:"updated"`
    DeleteRequested  time.Time `json:"deleteRequested" yaml:"deleteRequested"`
    Deleted          time.Time `json:"deleted" yaml:"deleted"`
    MonitorRequested time.Time `json:"monitorRequested" yaml:"monitorRequested"`
    Monitored        time.Time `json:"monitored" yaml:"monitored"`
    Generated        time.Time `json:"generated" yaml:"generated"` // time that system set after running generator for spec

    // KubernetesConfigBucket name of the bucket where kubernetes config file is stored.
    KubernetesConfigBucket string `json:"kubernetesConfigBucket" yaml:"kubernetesConfigBucket"`
    // KubernetesConfigOk represents condition of kubernetes config.
    KubernetesConfigOk *Condition `json:"kubernetesConfigOk" yaml:"kubernetesConfigOk"`

    // Cluster's certificates
    // This field is only populated for baremetal clusters with baremetal secret store (deprectated)
    // Deprectated: use kublrAgent secret store instead of baremetal secret store
    ClusterCerts *gencert.ClusterCertificates `json:"clusterCerts" yaml:"clusterCerts"`

    // Cluster Authentication Files (basic_auth.csv, known_tokens.csv, abac-authz-policy.jsonl, config)
    // This field is only populated for baremetal clusters with baremetal secret store (deprectated)
    // Deprectated: use kublrAgent secret store instead of baremetal secret store
    AuthFiles *gencert.AuthFiles `json:"authFiles" yaml:"authFiles"`

    // APIEndpoint is API endpoint to access cluster.
    APIEndpoint string `json:"apiEndpoint" yaml:"apiEndpoint"`
    // APIOk represents condition of API.
    APIOk *Condition `json:"apiOk" yaml:"apiOk"`

    MastersOk            *Condition `json:"mastersOk" yaml:"mastersOk"`
    NodesOk              *Condition `json:"nodesOk" yaml:"nodesOk"`
    DNSOk                *Condition `json:"dnsOk" yaml:"dnsOk"`
    TillerOk             *Condition `json:"tillerOk" yaml:"tillerOk"`
    OverallClusterStatus *Condition `json:"overallClusterStatus" yaml:"overallClusterStatus" bson:"overallClusterStatus"`

    // DashboardEndpoint is endpoint to Access Kubernetes Dashboard.
    DashboardEndpoint string     `json:"dashboardEndpoint" yaml:"dashboardEndpoint"`
    DashboardOk       *Condition `json:"dashboardOk" yaml:"dashboardOk"`

    Conditions     []*Condition     `json:"conditions" yaml:"conditions"`
    WarnConditions []*Condition     `json:"warnConditions" yaml:"warnConditions"`
    LocationStates []*LocationState `json:"locationStates" yaml:"locationStates"`

    InstanceGroupStates []*InstanceGroupState `json:"instanceGroupStates,omitempty" yaml:"instanceGroupStates,omitempty"`

    // FeatureStates represents the common state of the deployed features.
    FeatureStates []*FeatureState `json:"featureStates" yaml:"featureStates"`

    // DetailedFeatureStates represents the detailed state of the deployed features.
    DetailedFeatureStates DetailedFeatureStates `json:"detailedFeatureStates" yaml:"detailedFeatureStates"`

    // Packages represents the state of the deployed packages.
    PackageStates PackageStates `json:"packageStates" yaml:"packageStates"`

    // State is a current state of the cluster (i.e. Creating, Running, Error, Deleting, Deleted).
    State CurrentState `json:"state" yaml:"state"`
    // IngressLoadBalancer represents state of the ingress load balancer.
    IngressLoadBalancer IngressLoadBalancer `json:"ingressLoadBalancer" yaml:"ingressLoadBalancer" bson:"ingressLoadBalancer"`
    // LastSuccessfulSpecJSON is the last successful cluster spec in base64 format
    LastSuccessfulSpecJSON string `json:"lastSuccessfulSpecJson,omitempty" yaml:"lastSuccessfulSpecJson,omitempty" bson:"lastSuccessfulSpecJson,omitempty"`
}

type ClusterStatsCollectionSpec

ClusterStatsCollectionSpec is a specification for cluster-wide statistic collection. Deprecated kept here just for backward compatibility

type ClusterStatsCollectionSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
}

type ClusterUpdateStrategySpec

ClusterUpdateStrategySpec describes how to update existing instance groups

type ClusterUpdateStrategySpec struct {
    // Type of ClusterUpdateStrategyType.
    // Default is RollingUpdate.
    // +optional
    Type ClusterUpdateStrategyType `json:"type,omitempty" yaml:"type,omitempty" bson:"type,omitempty"`

    // Rolling update config params.
    // Present only if Type = RollingUpdate.
    // +optional
    RollingUpdate *ClusterRollingUpdateSpec `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty" bson:"rollingUpdate,omitempty"`
}

type ClusterUpdateStrategyType

ClusterUpdateStrategyType is type of update strategy for a cluster.

type ClusterUpdateStrategyType string

type Condition

Condition represents custom condition.

type Condition struct {
    Type               ConditionType   `json:"type" yaml:"type"`
    LastCheckTime      time.Time       `json:"lastCheckTime" yaml:"lastCheckTime"`
    LastTransitionTime time.Time       `json:"lastTransitionTime" yaml:"lastTransitionTime"`
    Status             ConditionStatus `json:"status" yaml:"status"`
    Reason             string          `json:"reason" yaml:"reason"`
    Message            string          `json:"message" yaml:"message"`
}

type ConditionStatus

ConditionStatus represent status of the condition.

type ConditionStatus string

type ConditionType

ConditionType represents type of the condition.

type ConditionType string

type ControlPlaneAPISpec

ControlPlaneAPISpec Kubernetes control plane access specification

type ControlPlaneAPISpec struct {
    APIUrl              []*string `json:"apiUrl,omitempty" yaml:"apiUrl,omitempty"`
    KubeconfigSecretRef *string   `json:"kubeconfigSecretRef,omitempty" yaml:"kubeconfigSecretRef,omitempty"`
}

type ControlPlaneFeatureSpec

ControlPlaneFeatureSpec is a spec for control plane (kublr) feature in cluster.

type ControlPlaneFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`
    // Enabled is bool value for enable feature
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Namespace kubernetes namespace to which control plane will be installed.
    Namespace *string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
    // Domain is a DNS name which will be used for API/UI/Auth.
    Domain *string `json:"domain,omitempty" yaml:"domain,omitempty"`
    // InitialAdminPassword password of admin user used for accessing kublr.
    InitialAdminPassword *string `json:"initialAdminPassword,omitempty" yaml:"initialAdminPassword,omitempty"`
    // Create ControlPlane in high availability mode (create replicas for databases)
    HighAvailability *bool `json:"highAvailability,omitempty" yaml:"highAvailability,omitempty" bson:"highAvailability,omitempty"`

    // StorageHostPath is host path for persistent data of control plane
    // This directory will be used for clusters that doesn't have dynamic volume provision.
    // Default value: /var/lib/kublr/kcp
    // Deprecated: configure node path for local host provisioner
    StorageHostPath *string `json:"storageHostPath,omitempty" yaml:"storageHostPath,omitempty" bson:"storageHostPath,omitempty"`

    IntercomID         *string `json:"intercomId,omitempty" yaml:"intercomId,omitempty" bson:"intercomId,omitempty"`
    IntercomUserID     *string `json:"intercomUserId,omitempty" yaml:"intercomUserId,omitempty" bson:"intercomUserId,omitempty"`
    GoogleTagManagerID *string `json:"googleTagManagerId,omitempty" yaml:"googleTagManagerId,omitempty" bson:"googleTagManagerId,omitempty"`
    GoogleAnalyticsID  *string `json:"googleAnalyticsId,omitempty" yaml:"googleAnalyticsId,omitempty" bson:"googleAnalyticsId,omitempty"`
    LogRocketID        *string `json:"logRocketId,omitempty" yaml:"logRocketId,omitempty" bson:"logRocketId,omitempty"`
    TrackingEnabled    *bool   `json:"trackingEnabled,omitempty" yaml:"trackingEnabled,omitempty" bson:"trackingEnabled,omitempty"`

    UserRegBaseURL *string `json:"userRegBaseUrl,omitempty" yaml:"userRegBaseUrl,omitempty" bson:"userRegBaseUrl,omitempty"`
    DocsBaseURL    *string `json:"docsBaseUrl,omitempty" yaml:"docsBaseUrl,omitempty" bson:"docsBaseUrl,omitempty"`
}

type ControlPlaneFeatureState

ControlPlaneFeatureState represents state of the Control Plane feature.

type ControlPlaneFeatureState struct {
    APIEndpoint       string    `json:"apiEndpoint" yaml:"apiEndpoint" bson:"apiEndpoint"`
    AuthEndpoint      string    `json:"authEndpoint" yaml:"authEndpoint" bson:"authEndpoint"`
    AuthTokenEndpoint string    `json:"authTokenEndpoint" yaml:"authTokenEndpoint" bson:"authTokenEndpoint"`
    UIEndpoint        string    `json:"uiEndpoint" yaml:"uiEndpoint" bson:"uiEndpoint"`
    ReadyState        Condition `json:"readyState" yaml:"readyState" bson:"readyState"` // ToDo : rename to condition
    // KCPSha256Sum is SHA256 checksum of the current cluster specification saved during cluster registration
    KCPSha256Sum string `json:"kcpSha256sum" yaml:"kcpSha256sum" bson:"kcpSha256sum"`
    // ActualKCPSha256Sum is the SHA256 checksum of system cluster spec in the remote kcp
    ActualKCPSha256Sum string `json:"actualKcpSha256sum" yaml:"actualKcpSha256sum" bson:"actualKcpSha256sum"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type CurrentState

CurrentState represents current state of the cluster.

type CurrentState string

type DetailedFeatureStates

DetailedFeatureStates represents the detailed state of the deployed features.

type DetailedFeatureStates struct {
    KublrOperator       *ClusterPackageState      `json:"kublrOperator,omitempty" yaml:"kublrOperator,omitempty" bson:"kublrOperator,omitempty"`
    KublrSystemState    *ClusterPackageState      `json:"kublrSystemState,omitempty" yaml:"kublrSystemState,omitempty" bson:"kublrSystemState,omitempty"`
    ControlPlaneState   *ControlPlaneFeatureState `json:"controlPlaneState,omitempty" yaml:"controlPlaneState,omitempty" bson:"controlPlaneState,omitempty"`
    LoggingState        *LoggingFeatureState      `json:"loggingState,omitempty" yaml:"loggingState,omitempty" bson:"loggingState,omitempty"`
    MonitoringState     *MonitoringFeatureState   `json:"monitoringState,omitempty" yaml:"monitoringState,omitempty" bson:"monitoringState,omitempty"`
    KubeDbState         *ClusterPackageState      `json:"kubedbState,omitempty" yaml:"kubedbState,omitempty" bson:"kubedbState,omitempty"`
    IngressState        *IngressFeatureState      `json:"ingressState,omitempty" yaml:"ingressState,omitempty" bson:"ingressState,omitempty"`
    FeatureControllerOk *Condition                `json:"featureControllerOk,omitempty" yaml:"featureControllerOk,omitempty" bson:"featureControllerOk,omitempty"`
}

type DockerRegistryAuth

DockerRegistryAuth is a docker registry authentication information

type DockerRegistryAuth struct {
    Registry  *string `json:"registry,omitempty" yaml:"registry,omitempty"`
    SecretRef *string `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
}

type DockerRegistryOverride

DockerRegistryOverride is a docker registry overrides

type DockerRegistryOverride struct {
    Default   string `json:"default,omitempty" yaml:"default,omitempty"`
    DockerIO  string `json:"docker_io,omitempty" yaml:"docker_io,omitempty"`
    GcrIO     string `json:"gcr_io,omitempty" yaml:"gcr_io,omitempty"`
    K8sGcrIO  string `json:"k8s_gcr_io,omitempty" yaml:"k8s_gcr_io,omitempty"`
    QuayIO    string `json:"quay_io,omitempty" yaml:"quay_io,omitempty"`
    ElasticCO string `json:"elastic_co,omitempty" yaml:"elastic_co,omitempty"`
}

type DockerRegistrySecretSpec

DockerRegistrySecretSpec is a Docker Registry Secret

type DockerRegistrySecretSpec struct {
    // Registry is name of Docker Registry (i.e. 'myregistry.com:5000')
    // Required
    Registry string `json:"registry" yaml:"registry" bson:"registry"`
    // Insecure can be set to true to disable TLS certificate verification for this registry.
    // Optional
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
    // Username for Docker Registry access.
    // Optional
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
    // Password for Docker Registry access.
    // Optional
    Password string `json:"password,omitempty" yaml:"password,omitempty" bson:"password,omitempty"`
    // Certificate is Docker Registry client certificate, that should be trysted by Docker daemon.
    // Optional
    Certificate string `json:"certificate,omitempty" yaml:"certificate,omitempty" bson:"certificate,omitempty"`
}

type DockerRegistrySpec

DockerRegistrySpec is a spec for docker registry

type DockerRegistrySpec struct {
    Auth     []*DockerRegistryAuth   `json:"auth,omitempty" yaml:"auth,omitempty"`
    Override *DockerRegistryOverride `json:"override,omitempty" yaml:"override,omitempty"`
}

type DrainStrategySpec

DrainStrategySpec controls the desired node drain behavior during update

type DrainStrategySpec struct {
    // Skip to drain node during update
    // Default: false
    Skip bool `json:"skip,omitempty" yaml:"skip,omitempty" bson:"skip,omitempty"`
    // Force is the flag of drain command
    // Continue even if there are pods not managed by a ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet
    // Default: true
    Force *bool `json:"force,omitempty" yaml:"force,omitempty" bson:"force,omitempty"`
    // IgnoreAllDaemonSets is the flag of drain command
    // Ignore DaemonSet-managed pods
    // Default: true
    IgnoreAllDaemonSets *bool `json:"ignoreAllDaemonSets,omitempty" yaml:"ignoreAllDaemonSets,omitempty" bson:"ignoreAllDaemonSets,omitempty"`
    // DeleteLocalData is the flag of drain command
    // Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained)
    // Default: true
    DeleteLocalData *bool `json:"deleteLocalData,omitempty" yaml:"deleteLocalData,omitempty" bson:"deleteLocalData,omitempty"`
    // GracePeriodSeconds is the flag of drain command
    // Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used
    // Default: 30
    GracePeriodSeconds *int `json:"gracePeriodSeconds,omitempty" yaml:"gracePeriodSeconds,omitempty" bson:"gracePeriodSeconds,omitempty"`
    // Timeout is the flag of drain command
    // The length of time to wait before giving up, zero means infinite
    // Default: 30s
    Timeout *string `json:"timeout,omitempty" yaml:"timeout,omitempty" bson:"timeout,omitempty"`
}

type ElastigroupSpec

ElastigroupSpec object describes elastigroup parameters for a specific node group

type ElastigroupSpec struct {
    SpotinstAccessTokenSecretRef *string `json:"spotinstAccessTokenSecretRef,omitempty" bson:"spotinstAccessTokenSecretRef" yaml:"spotinstAccessTokenSecretRef,omitempty"`

    // Spec - Content of this object should correspond with 'Properties' object structure
    // of CloudFormation custom resoure of type 'Custom::elasticgroup' as described in
    // spotinst documentation, e.g.
    // https://api.spotinst.com/provisioning-ci-cd-sdk/provisioning-tools/cloudformation/examples/elastigroup/create-generic/
    //
    // In particular it may include 'group', 'updatePolicy', 'deletePolicy' properties etc.
    //
    // Kublr generator will override or extend certain elsatigroup spec properties
    // according to generic parameters in the instance group specification, e.g.
    // min/max nodes, instance type, etc
    Spec ElastigroupSpecMap `json:"spec,omitempty" yaml:"spec,omitempty" bson:"spec"`
}

type ElastigroupSpecMap

ElastigroupSpecMap is a spec for elastigroup.

type ElastigroupSpecMap map[string]interface{}

type Entity

Entity - MongoDB entity

type Entity struct {
    // ID is object id assigned by MongoDB during save.
    ID string `json:"id" yaml:"id" bson:"_id,omitempty"`
    // Metadata is object metadata.
    Metadata ObjectMeta `valid:"" json:"metadata" yaml:"metadata" bson:"metadata"`
    // TypeMeta is type metadata.
    TypeMeta `valid:"-" json:",inline" yaml:",inline"`
}

type Event

Event is a definition of events, which happens with cluster.

type Event struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    // InvolvedObject is the object that this event is about.
    // Intended usage is to put reference to kubernetes object to which this event about.
    InvolvedObject *ObjectReference `json:"involvedObject,omitempty" yaml:"involvedObject,omitempty"`
    Reason         string           `json:"reason" yaml:"reason"`
    Message        string           `json:"message" yaml:"message"`
    Source         *EventSource     `json:"eventSource,omitempty" yaml:"eventSource,omitempty"`
    FirstTimestamp time.Time        `json:"firstTimestamp" yaml:"firstTimestamp"`
    LastTimestamp  time.Time        `json:"lastTimestamp" yaml:"lastTimestamp"`
    Count          int              `json:"count" yaml:"count"`
    // Severity is an Event Severity.
    Severity EventSeverity `json:"severity" yaml:"severity"`
    // ClusterID is an ID of the cluster to which this event belongs.
    ClusterID string `json:"clusterId" yaml:"clusterId" bson:"clusterId"`
}

type EventListResult

EventListResult holds Events.

type EventListResult struct {
    Total int     `json:"total" yaml:"total"`
    Items []Event `json:"items" yaml:"items"`
}

type EventSeverity

EventSeverity is a severity of the event.

type EventSeverity int

type EventSource

EventSource defines source of the event.

type EventSource struct {
    // Component - which component created the event.
    Component string `json:"component" yaml:"component"`
    // Host is a host on which event was initiated.
    Host string `json:"host" yaml:"host"`
}

type FeatureCondition

FeatureCondition represents feature condition

type FeatureCondition struct {
    // Type is the type of the condition.
    Type FeatureConditionType `json:"type" yaml:"type"`
    // Last time we probed the condition.
    // +optional
    LastCheckTime time.Time `json:"lastCheckTime" yaml:"lastCheckTime"`
    // Last time the condition transitioned from one status to another.
    // +optional
    LastTransitionTime time.Time `json:"lastTransitionTime" yaml:"lastTransitionTime"`
    // Status is the status of the condition.
    // Can be True, False, Unknown.
    Status ConditionStatus `json:"status" yaml:"status"`
    // Unique, one-word, CamelCase reason for the condition's last transition.
    // +optional
    Reason string `json:"reason" yaml:"reason"`
    // Human-readable message indicating details about last transition.
    // +optional
    Message string `json:"message" yaml:"message"`
}

type FeatureConditionType

FeatureConditionType represents the type of the feature condition

type FeatureConditionType string

type FeatureName

FeatureName is the type for the feature name

type FeatureName string

type FeatureState

FeatureState represents state of the deployed feature.

type FeatureState struct {
    FeatureName FeatureName `json:"featureName" yaml:"featureName"`
    ReleaseName string      `json:"releaseName" yaml:"releaseName"`
    Created     time.Time   `json:"created" yaml:"created"`
    Modified    time.Time   `json:"modified" yaml:"modified"`
    Deleted     time.Time   `json:"deleted" yaml:"deleted"`
    FeatureOk   *Condition  `json:"featureOk" yaml:"featureOk"`
    // Namespace is kubernetes namespace to which the feature is installed.
    Namespace string `json:"namespace" yaml:"namespace"`
    // Version is the version of the installed feature
    Version string `json:"version" yaml:"version"`
    // Sha256sum is the SHA256 checksum for the installed function
    Sha256sum string `json:"sha256sum" yaml:"sha256sum"`
}

type GCPAPIAccessKeySpec

GCPAPIAccessKeySpec defines Google cloud email, key, projectID

type GCPAPIAccessKeySpec struct {
    ClientEmail string `json:"clientEmail,omitempty" yaml:"clientEmail,omitempty"`
    PrivateKey  string `json:"privateKey,omitempty" yaml:"privateKey,omitempty"`
    ProjectID   string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
}

type GCPDiskSpec

GCPDiskSpec is google cloud disk spec

type GCPDiskSpec struct {
    SizeGb      *int             `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty"`
    Type        *GCPDiskTypeEnum `json:"type,omitempty" yaml:"type,omitempty"`
    SourceImage *string          `json:"sourceImage,omitempty" yaml:"sourceImage,omitempty"`
}

type GCPDiskTypeEnum

GCPDiskTypeEnum is type for disk in google cloud

type GCPDiskTypeEnum string

type GCPInstanceGroupLocationSpec

GCPInstanceGroupLocationSpec is google cloud group location spec

type GCPInstanceGroupLocationSpec struct {
    InstanceType *string `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`
    // SSHKeySecretRef reference to the secret object containing public SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    SSHKey          *string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`
    // NodeIPAllocationPolicy is Instance IP allocation policy - 'default' (same as 'privateAndPublic'), 'private', or 'privateAndPublic'.
    NodeIPAllocationPolicy *NodeIPAllocationPolicyEnum `json:"nodeIpAllocationPolicy,omitempty" yaml:"nodeIpAllocationPolicy,omitempty"`
    BootDisk               *GCPDiskSpec                `json:"bootDisk,omitempty" yaml:"bootDisk,omitempty"`
    MasterDataDisk         *GCPDiskSpec                `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`
    // Zones to limit this group to.
    // If omitted, generator will automatically assign it to all available zones.
    Zones []*string `json:"zones,omitempty" yaml:"zones,omitempty"`
    // PinToZone is 'pin' if instances must be pinned to a single zone from the list, or 'span' if no pinning is necessary.
    // 'default' is the same as 'pin' for stateful groups and 'span' for stateless.
    PinToZone *InstanceGroupLocationSpecPinToZoneTypeEnum `json:"pinToZone,omitempty" yaml:"pinToZone,omitempty"`
}

type GCPLocationSpec

GCPLocationSpec is google cloud location spec

type GCPLocationSpec struct {
    // Reference to the secret object containing Google Cloud secrets to access
    GCPApiAccessSecretRef *string `json:"gcpApiAccessSecretRef,omitempty" yaml:"gcpApiAccessSecretRef,omitempty"`
    // Reference to the secret object containing public SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    // Google Cloud Project ID
    // If omitted, it will be populated automatically based on the secret.
    ProjectID *string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
    // Google Cloud region
    // refer to https://cloud.google.com/compute/docs/regions-zones/
    Region *string `json:"region,omitempty" yaml:"region,omitempty"`
    // Google Cloud region zones to be used for Kubernetes cluster in this location.
    // If omitted, it will be populated automatically to all zones available for this project in this region.
    Zones []*string `json:"zones,omitempty" yaml:"zones,omitempty"`

    // VpcProjectID is a Google Cloud Project ID which owns the Existing VCP Network.
    // If omitted - we assume network exists in the same project where cluster is created.
    VpcProjectID *string `json:"vpcProjectId,omitempty" yaml:"vpcProjectId,omitempty"`
    // VpcName is an existing VPC Network name.
    // If omitted, a new VPC will be created, otherwise existing VPC will be used.
    VpcName *string `json:"vpcName,omitempty" yaml:"vpcName,omitempty"`
    // VpcCidrBlock is an IP address range for instances in VPC Network.
    // If omitted, one of 16 standard private /16 IP ranges (172.16.0.0/16, ... , 172.31.0.0/16) will be assigned.
    VpcCidrBlock *string `json:"vpcCidrBlock,omitempty" yaml:"vpcCidrBlock,omitempty"`
    // VpcSubnetName is an existing VPC Network Subnet name.
    // If omitted, a new subnet will be created, otherwise existing will be used.
    VpcSubnetName *string `json:"vpcSubnetName,omitempty" yaml:"vpcSubnetName,omitempty"`
}

type GCPLocationState

GCPLocationState represents state of GCP Location.

type GCPLocationState struct {
    DeploymentName            string   `json:"deploymentName" yaml:"deploymentName"`
    DeploymentState           string   `json:"deploymentState" yaml:"deploymentState"`
    PrepareToCreateDeployment bool     `json:"prepareToCreateDeployment" yaml:"prepareToCreateDeployment"`
    InstanceGroups            []string `json:"instanceGroups" yaml:"instanceGroups"`
    DeletionAttempts          int      `json:"deletionAttempts" yaml:"deletionAttempts"`
}

type GlobalRole

GlobalRole is in global scope, not in any space

type GlobalRole struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Rules holds all the PolicyRules for this Role
    Rules []PolicyRule `json:"rules" yaml:"rules"`
}

type GlobalRoleBinding

GlobalRoleBinding is in the global scope

type GlobalRoleBinding struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // RoleRef can only reference a GlobalRole in the global space.
    // If the RoleRef cannot be resolved, the Authorizer must return an error.
    RoleRef RoleRef `json:"roleRef" yaml:"roleRef"`
    // Subjects holds references to the objects the role applies to.
    Subjects []Subject `json:"subjects" yaml:"subjects"`
}

type GlobalRoleBindingListResult

GlobalRoleBindingListResult is a collection of GlobalRoleBindings

type GlobalRoleBindingListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roleBindings
    Items []GlobalRoleBinding `json:"items" yaml:"items"`
}

type GlobalRoleListResult

GlobalRoleListResult is a collection of GlobalRoles

type GlobalRoleListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roles
    Items []GlobalRole `json:"items" yaml:"items"`
}

type GoogleGCSSecretStoreSpec

GoogleGCSSecretStoreSpec - google cloud secret store spec

type GoogleGCSSecretStoreSpec struct {
    LocationRef string `json:"locationRef,omitempty" yaml:"locationRef,omitempty"`
    BucketName  string `json:"bucketName,omitempty" yaml:"bucketName,omitempty"`
}

type GrafanaSpec

GrafanaSpec is a spec for Grafana installation

type GrafanaSpec struct {
    // Enabled indicates if Grafana is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if storage is enabled.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
}

type HostSpec

HostSpec is a spec for a host in bare-metal installations.

type HostSpec struct {
    // Address is a reachable address for the host. Can be hostname or an IP-address.
    Address *string `json:"address,omitempty" yaml:"address,omitempty" bson:"address,omitempty" bson:"address,omitempty"`
    // Reference to the secret object containing private SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty" bson:"sshKeySecretRef,omitempty"`
    // Username to connect to ssh
    Username *string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
}

type HostState

HostState represents state of the host.

type HostState struct {
    Address string `json:"address" yaml:"address"`
    // Reference to the secret object containing private SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty" bson:"sshKeySecretRef,omitempty"`
    // Username to connect to ssh
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
    // Deprecated: kublr agent provides node state information
    RegisterOk Condition `json:"registerOk" yaml:"registerOk"`
    // Deprecated: kublr agent provides node state information
    DeregisterOk Condition `json:"deregisterOk" yaml:"deregisterOk"`
}

type IPRangeSpec

IPRangeSpec - holds IP range spec

type IPRangeSpec struct {
    // StartAddress is a start address of the IP range.
    // Required
    StartAddress *string `json:"startAddress,omitempty" yaml:"startAddress,omitempty"`
    // EndAddress is an end address of the IP range.
    // Required
    EndAddress *string `json:"endAddress,omitempty" yaml:"endAddress,omitempty"`
}

type IdentifiableEntity

IdentifiableEntity base interface for entity with ID and general metadata properties

type IdentifiableEntity interface {
    GetID() string
    SetID(string)
    GetMetadata() ObjectMeta
    GetTypeMeta() TypeMeta
    SetResourceVersion(version int)
    SetSpace(space string)
    SetLabels(labels map[string]string)
    GetResourceVersion() int
    GetCreatedTimestamp() time.Time
    GetUpdatedTimestamp() time.Time
    SetCreatedTimestamp(t time.Time)
    SetUpdatedTimestamp(t time.Time)
}

type IngressFeatureState

IngressFeatureState represents state of the ingress feature.

type IngressFeatureState struct {
    // Address represents DNS name or IP address of load balancer.
    // for Amazon - DNS name
    // for Azure - IP address
    Address string `json:"address" yaml:"address" bson:"address"`

    // HTTPPort represents the port for the http connection.
    HTTPPort int32 `json:"httpPort" yaml:"httpPort" bson:"httpPort"`
    // HTTPSPort represents the port for the https connection.
    HTTPSPort int32 `json:"httpsPort" yaml:"httpsPort" bson:"httpsPort"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type IngressLoadBalancer

IngressLoadBalancer represents state of the ingress load balancer.

type IngressLoadBalancer struct {
    // Address represents DNS name or IP address of load balancer.
    // for Amazon - DNS name
    // for Azure - IP address
    Address string `json:"address" yaml:"address" bson:"address"`
    // LoadBalancerOk represents condition of load balancer.
    LoadBalancerOk *Condition `json:"loadBalancerOk" yaml:"loadBalancerOk" bson:"loadBalancerOk"`
    // HTTPPort represents the port for the http connection.
    HTTPPort int32 `json:"httpPort" yaml:"httpPort"`
    // HTTPSPort represents the port for the https connection.
    HTTPSPort int32 `json:"httpsPort" yaml:"httpsPort"`
}

type InitCommand

InitCommand specifies command to be used for initialization of new node in the location state.

type InitCommand struct {
    // NodeGroup name of the group to which command applies.
    NodeGroup string `json:"nodeGroup" yaml:"nodeGroup"`
    // NodeOrdinal is an ordinal within group.
    NodeOrdinal int64 `json:"nodeOrdinal" yaml:"nodeOrdinal"`
    // Command is a command to be executed to init a node.
    Command string `json:"command" yaml:"command"`
}

type InstanceGroupLocationSpec

InstanceGroupLocationSpec is a spec for an instance group location.

type InstanceGroupLocationSpec struct {
    LocationRef *string `json:"locationRef,omitempty" yaml:"locationRef,omitempty"`
    // Aws is a spec for AWS installations.
    //+optional
    Aws *AwsInstanceGroupLocationSpec `json:"aws,omitempty" yaml:"aws,omitempty"`
    // Azure is a spec for Azure installations.
    //+optional
    Azure *AzureInstanceGroupLocationSpec `json:"azure,omitempty" yaml:"azure,omitempty"`
    // Baremetal is a spec for bare-metal installation.
    //+optional
    Baremetal *BaremetalInstanceGroupLocationSpec `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    // Gcp is a spec to Google Cloud installations.
    //+optional
    Gcp *GCPInstanceGroupLocationSpec `json:"gcp,omitempty" yaml:"gcp,omitempty"`
    // Vcd is a spec to VMware Cloud Director.
    //+optional
    Vcd *VCDInstanceGroupLocationSpec `json:"vcd,omitempty" yaml:"vcd,omitempty"`
    // VSphere is a spec to VMWare vSphere.
    //+optional
    VSphere *VSphereInstanceGroupLocationSpec `json:"vSphere,omitempty" yaml:"vSphere,omitempty"  bson:"vSphere,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`
}

type InstanceGroupLocationSpecPinToZoneTypeEnum

InstanceGroupLocationSpecPinToZoneTypeEnum defines whether stateful group instances are pinned to zone for some cloud providers (currently AWS and GCP are supported).

type InstanceGroupLocationSpecPinToZoneTypeEnum string

type InstanceGroupProcessesDescr

InstanceGroupProcessesDescr specification of processes (seeder and agent) configuration for an instance group (POSSIBLY FUTURE: with potential variations by node ordinal and/or identifier)

type InstanceGroupProcessesDescr struct {
    Group     *ProcessesDescr   `json:"group,omitempty" yaml:"group,omitempty"`
    ByOrdinal []*ProcessesDescr `json:"byOrdinal,omitempty" yaml:"byOrdinal,omitempty"`
}

type InstanceGroupRollingUpdateStrategySpec

InstanceGroupRollingUpdateStrategySpec controls the desired behavior of rolling update.

type InstanceGroupRollingUpdateStrategySpec struct {
    // The maximum number of nodes that can be unavailable during the update.
    // Value can be an absolute number (ex: 5) or a percentage of desired nodes (ex: 10%).
    // Absolute number is calculated from percentage by rounding down.
    // Defaults to 1.
    // +optional
    MaxUnavailable *Int32OrString `json:"maxUnavailable,omitempty" yaml:"maxUnavailable,omitempty" bson:"maxUnavailable,omitempty"`
}

type InstanceGroupSpec

InstanceGroupSpec is a spec for instance group.

type InstanceGroupSpec struct {
    Name *string `valid:"alphanum,required" json:"name,omitempty" yaml:"name,omitempty"`
    // KublrVariant is a variant to use for this group.
    // If omitted, generator will try to assign it automatically.
    //+optional
    KublrVariant *string `json:"kublrVariant,omitempty" yaml:"kublrVariant,omitempty"`
    MinNodes     *int    `json:"minNodes,omitempty" yaml:"minNodes,omitempty"`
    InitialNodes *int    `json:"initialNodes,omitempty" yaml:"initialNodes,omitempty"`
    MaxNodes     *int    `json:"maxNodes,omitempty" yaml:"maxNodes,omitempty"`
    // Stateful indicates that this group is stateful. It means that Autoscaling MUST be disabled for this group.
    // Also, all nodes will have stable identifiers in the group. (I.e. it will be a pet group, not cattle).
    Stateful *bool `json:"stateful,omitempty" yaml:"stateful,omitempty"`
    // Autoscaling is a flag indicating if autoscaling is enabled for this group or not.
    Autoscaling *bool `json:"autoscaling,omitempty" yaml:"autoscaling,omitempty"`
    // Locations is a spec for locations for this group.
    // Only one location per group is currently supported.
    // If omitted, generator will try to assign it automatically to the first available location.
    // +optional
    Locations []*InstanceGroupLocationSpec `json:"locations,omitempty" yaml:"locations,omitempty"`

    // UpdateStrategy is used to update existing nodes
    // +optional
    UpdateStrategy *InstanceGroupUpdateStrategySpec `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty" bson:"updateStrategy,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters overridable in InstanceGroupLocationSpec
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`

    // The maximum time in seconds for a instanceGroup to make progress before it is considered to be failed.
    // Defaults to 1200s.
    ProgressDeadlineSeconds *int `json:"progressDeadlineSeconds,omitempty" yaml:"progressDeadlineSeconds,omitempty" bson:"progressDeadlineSeconds,omitempty"`
}

type InstanceGroupState

InstanceGroupState is a state object for instance group

type InstanceGroupState struct {
    // The name of instance group
    Name string `valid:"alphanum,required" json:"name" yaml:"name" bson:"name"`

    // UpdateStartTime is update start time
    UpdateStartTime time.Time `json:"updateStartTime" yaml:"updateStartTime" bson:"updateStartTime"`

    // BYOIGeneratedConfigs is specification of processes (seeder and agent) configuration
    // This field is only populated for baremetal (BYOI) groups as it is only intended to be used for installation script generation.
    // If seeder is used for this group, then only seeder part of the generated group config is saved here;
    // otherwise agent config is saved.
    //
    // NB! json/yaml/bson serialization field name is different for backward compatibility.
    BYOIGeneratedConfigs *InstanceGroupProcessesDescr `json:"generatedConfigs,omitempty" yaml:"generatedConfigs,omitempty" bson:"generatedConfigs,omitempty"`

    // Total number of nodes found in this instance group
    // +optional
    Replicas int `json:"replicas" yaml:"replicas" bson:"replicas"`

    // Total number of ready nodes in this instance group that have the desired configuration.
    // +optional
    UpdatedReplicas int `json:"updatedReplicas" yaml:"updatedReplicas" bson:"updatedReplicas"`

    // Total number of ready nodes in this instance group.
    // +optional
    ReadyReplicas int `json:"readyReplicas" yaml:"readyReplicas" bson:"readyReplicas"`

    // Total number of unavailable nodes in this instance group
    // This is the total number of nodes that are running but not yet in ready state or nodes
    // that still have not been created.
    // +optional
    UnavailableReplicas int `json:"unavailableReplicas" yaml:"unavailableReplicas" bson:"unavailableReplicas"`

    // KublrAgentSha256 is checksum of binary Kublr agent that is set in manifest.yaml to Seeder
    // +optional
    KublrAgentSha256 string `json:"kublrAgentSha256,omitempty" yaml:"kublrAgentSha256,omitempty" bson:"kublrAgentSha256,omitempty"`

    // KublrAgentExtSha256 is checksum of extensions of Kublr agent that is set in manifest.yaml to Seeder
    // +optional
    KublrAgentExtSha256 map[string]string `json:"kublrAgentExtSha256,omitempty" yaml:"kublrAgentExtSha256,omitempty" bson:"kublrAgentExtSha256,omitempty"`

    // KublrAgentCfgSha256 is checksum of configuration of Kublr agent that is set in manifest.yaml to Seeder
    // This field can be used only for stateless groups
    // +optional
    KublrAgentCfgSha256 string `json:"kublrAgentCfgSha256,omitempty" yaml:"kublrAgentCfgSha256,omitempty" bson:"kublrAgentCfgSha256,omitempty"`

    // KublrAgentSha256Desired is checksum of binary Kublr agent that should be set after update cluster
    // +optional
    KublrAgentSha256Desired string `json:"kublrAgentSha256Desired,omitempty" yaml:"kublrAgentSha256Desired,omitempty" bson:"kublrAgentSha256Desired,omitempty"`

    // KublrAgentExtSha256Desired is checksum of extensions of Kublr agent that should be set after update cluster
    // +optional
    KublrAgentExtSha256Desired map[string]string `json:"kublrAgentExtSha256Desired,omitempty" yaml:"kublrAgentExtSha256Desired,omitempty" bson:"kublrAgentExtSha256Desired,omitempty"`

    // KublrAgentCfgSha256Desired is checksum of configuration of Kublr agent that should be set after update cluster
    // This field can be used only for stateless groups
    // +optional
    KublrAgentCfgSha256Desired string `json:"kublrAgentCfgSha256Desired,omitempty" yaml:"kublrAgentCfgSha256Desired,omitempty" bson:"kublrAgentCfgSha256Desired,omitempty"`

    //Nodes is nodes status in this group
    Nodes []NodeState `json:"nodes,omitempty" yaml:"nodes,omitempty" bson:"nodes,omitempty"`

    // KublrAgentSource specifies URL and credentials for Kublr agent binary
    // This field is only used during cluster update.
    KublrAgentSource *SourceDescr `json:"kublrAgentSource,omitempty" yaml:"kublrAgentSource,omitempty" bson:"kublrAgentSource,omitempty"`

    // KublrAgentExtSource specifies a map of sources (URL + credentials) for Kublr agent extensions to use
    // This field is only used during cluster update.
    KublrAgentExtSource map[string]*SourceDescr `json:"kublrAgentExtSource,omitempty" yaml:"kublrAgentExtSource,omitempty" bson:"kublrAgentExtSource,omitempty"`
}

type InstanceGroupUpdateStrategySpec

InstanceGroupUpdateStrategySpec describes how to update existing nodes

type InstanceGroupUpdateStrategySpec struct {
    // Type of InstanceGroupUpdateStrategySpec. Currently the only supported strategy is "RollingUpdate".
    // Default is RollingUpdate.
    // +optional
    Type InstanceGroupUpdateStrategyType `json:"type,omitempty" yaml:"type,omitempty" bson:"type,omitempty"`

    // Rolling update config params.
    // Present only if Type = RollingUpdate.
    // +optional
    RollingUpdate *InstanceGroupRollingUpdateStrategySpec `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty" bson:"rollingUpdate,omitempty"`

    // DrainStrategy holds the parameters to drain node
    // +optional
    DrainStrategy *DrainStrategySpec `json:"drainStrategy,omitempty" yaml:"drainStrategy,omitempty" bson:"drainStrategy,omitempty"`
}

type InstanceGroupUpdateStrategyType

InstanceGroupUpdateStrategyType is type of update strategy for nodes in instance groups.

type InstanceGroupUpdateStrategyType string

type Int32OrString

Int32OrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.

type Int32OrString struct {
    Type   Type
    IntVal int32
    StrVal string
}

type KcpConfig

KcpConfig is in the global scope

type KcpConfig struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    Data interface{} `json:"data,omitempty" yaml:"data,omitempty"`
}

type KcpConfigListResult

KcpConfigListResult is a collection of KcpConfig

type KcpConfigListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roleBindings
    Items []KcpConfig `json:"items" yaml:"items"`
}

type KubeDbFeatureSpec

KubeDbFeatureSpec is a spec for kubeDb.

type KubeDbFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty" bson:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty" bson:"values,omitempty"`
    // Enabled is bool value for enable feature
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
}

type KubeDbFeatureState

KubeDbFeatureState represents state of the Kubedb feature.

type KubeDbFeatureState struct {
    // Condition represents status of the kubedb feature.
    Condition Condition `json:"condition" yaml:"condition" bson:"condition"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type KubeconfigSpec

KubeconfigSpec is a Kubeconfig Secret

type KubeconfigSpec struct {
    // KubeconfigYamlFile kubeconfig file content in yaml format
    // Optional
    KubeconfigYamlFile string `json:"kubeconfigYamlFile,omitempty" yaml:"kubeconfigYamlFile,omitempty" bson:"kubeconfigYamlFile,omitempty"`
}

type KublrAgentSecretStoreAccessKeySpec

KublrAgentSecretStoreAccessKeySpec specification of an access key for an agent secret store

type KublrAgentSecretStoreAccessKeySpec struct {
    // AccessKeyID id of the access key
    AccessKeyID *string `json:"accessKeyId,omitempty" yaml:"accessKeyId,omitempty" bson:"accessKeyId,omitempty"`

    // SecretAccessKey secret of the access key
    SecretAccessKey *string `json:"secretAccessKey,omitempty" yaml:"secretAccessKey,omitempty" bson:"secretAccessKey,omitempty"`

    // Role associated with this access key; currently one of 'master', 'node', or 'client'
    Role *string `json:"role,omitempty" yaml:"role,omitempty" bson:"role,omitempty"`
}

type KublrAgentSecretStoreEndpointSpec

KublrAgentSecretStoreEndpointSpec specification for a kublr agent secret store endpoint

type KublrAgentSecretStoreEndpointSpec struct {
    // Ordinal - master ordinal of the peer with this address.
    // If not specified, default value of -1 is used
    //+optional
    Ordinal *int `json:"ordinal,omitempty" yaml:"ordinal,omitempty" bson:"ordinal,omitempty"`

    // StaticAddress the static address for this endpoint
    StaticAddress *string `json:"staticAddress,omitempty" yaml:"staticAddress,omitempty" bson:"staticAddress,omitempty"`

    // Port to use for this endpoind;
    // This value overrides the port specified in KublrAgentSecretStoreSpec structure
    //+optional
    Port *int `json:"port,omitempty" yaml:"port,omitempty" bson:"port,omitempty"`

    // Priority group for the address.
    // - If "priority" field is omitted, "default" value will be used.
    // - Clients will test groups of endpoints in the lexicografical order of priority values:
    //   endpoints with priority starting with "a" will be tested before endpoints with priority starting with "z";
    // - Usage order for endpoints with the same priority will be randomized for every call;
    // - Peers will use the same approach with groups of endpoints with the same ordinal.
    //+optional
    Priority *string `json:"priority,omitempty" yaml:"priority,omitempty" bson:"priority,omitempty"`
}

type KublrAgentSecretStoreSpec

KublrAgentSecretStoreSpec is a spec for secret store based on kublr agent self-storage This is mostly used for bare-metal and BYOI deployments

type KublrAgentSecretStoreSpec struct {
    Endpoints map[string]*KublrAgentSecretStoreEndpointSpec `json:"endpoints,omitempty" yaml:"endpoints,omitempty" bson:"endpoints,omitempty"`

    // Port to use for the store API endpoind
    // If not specified, default value of 11251 is used
    //+optional
    Port *int `json:"port,omitempty" yaml:"port,omitempty" bson:"port,omitempty"`

    // TLSCerts TLS/HTTPS certificates for the store API
    TLSCerts *string `json:"tlsCerts,omitempty" yaml:"tlsCerts,omitempty" bson:"tlsCerts,omitempty"`
    // TLSKey TLS/HTTPS key for the store API
    TLSKey *string `json:"tlsKey,omitempty" yaml:"tlsKey,omitempty" bson:"tlsKey,omitempty"`

    // AccessKeys contains access and secret keys that should be configured for the store.
    // At least one key with 'master' role and one key with 'node' role must be defined.
    // If user does not provide one of them, generator will add missing ones
    // automatically.
    AccessKeys []*KublrAgentSecretStoreAccessKeySpec `json:"accessKeys,omitempty" yaml:"accessKeys,omitempty" bson:"accessKeys,omitempty"`
}

type KublrOperatorSpec

KublrOperatorSpec is a spec for kublr-operator.

type KublrOperatorSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty" bson:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty" bson:"values,omitempty"`
    // Enabled is bool value for enable feature
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
}

type ListResult

ListResult holds result of requests returning slice of objects. This is a generic result which can be used only if result should not be processed in any other way.

type ListResult struct {
    Total int           `json:"total" yaml:"total"`
    Items []interface{} `json:"items" yaml:"items"`
}

type LocalPathProvisioner

LocalPathProvisioner is configuration for local host path provisioner

type LocalPathProvisioner struct {
    // Enabled this feature
    // This feature is enabled by default for baremetal and vCloud Director clusters
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
    // DefaultPath is the default path to store the data on each node.
    // Root directory (/) is prohibited
    // Default: /var/lib/kublr/pvc
    DefaultPath string `json:"defaultPath,omitempty" yaml:"defaultPath,omitempty" bson:"defaultPath,omitempty"`
}

type LocationSpec

LocationSpec is a spec for a location. Only one spec should be not-nil inside.

type LocationSpec struct {
    // Name is a name of the location.
    Name *string `json:"name,omitempty" yaml:"name,omitempty"`
    // Aws specifies AWS specific details.
    // +optional
    Aws *AwsLocationSpec `json:"aws,omitempty" yaml:"aws,omitempty"`
    // Azure specifies Azure specific details.
    // +optional
    Azure *AzureLocationSpec `json:"azure,omitempty" yaml:"azure,omitempty"`
    // Baremetal specifies bare-metal specific details.
    // +optional
    Baremetal *BaremetalLocationSpec `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    // Gcp specifies Google Cloud specific details
    // +optional
    Gcp *GCPLocationSpec `json:"gcp,omitempty" yaml:"gcp,omitempty"`
    // Vcd specifiies VMware cloud director specific details,
    // +optional
    Vcd *VCDLocationSpec `json:"vcd,omitempty" yaml:"vcd,omitempty"`
    // VSphere specifiies VMWare vSphere specific details,
    // +optional
    VSphere *VSphereLocationSpec `json:"vSphere,omitempty" yaml:"vSphere,omitempty" bson:"vSphere,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters overridable in InstanceGroupSpec, and InstanceGroupLocationSpec
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`
}

type LocationState

LocationState represents state of the location.

type LocationState struct {
    LocationRef *string `json:"locationRef" yaml:"locationRef"`
    // Aws stores location state for AWS installations.
    //+optional
    Aws *AWSLocationState `json:"aws" yaml:"aws"`
    // Baremetal stores location state for baremetal installations.
    //+optional
    // Azure stores location state for Azure installations.
    //+optional
    Azure *AzureLocationState `json:"azure" yaml:"azure"`
    // Baremetal stores location state for on-prem installations.
    //+optional
    Baremetal *BaremetalLocationState `json:"baremetal" yaml:"baremetal"`
    // Gcp stores location state for GCP installations.
    //+optional
    Gcp *GCPLocationState `json:"gcp" yaml:"gcp"`
    // Vcd stores location state for VMware vCD installations.
    //+optional
    Vcd *VCDLocationState `json:"vcd" yaml:"vcd"`
    // VSphere stores location state for VMWare vSphere installations.
    //+optional
    VSphere *VSphereLocationState `json:"vSphere" yaml:"vSphere" bson:"vSphere"`

    LocationOk      *Condition   `json:"locationOk" yaml:"locationOk"`
    Conditions      []*Condition `json:"conditions" yaml:"conditions"`
    CreateRequested time.Time    `json:"createRequested" yaml:"createRequested"`
    Created         time.Time    `json:"created" yaml:"created"`
    UpdateRequested time.Time    `json:"updateRequested" yaml:"updateRequested"`
    Updated         time.Time    `json:"updated" yaml:"updated"`
    DeleteRequested time.Time    `json:"deleteRequested" yaml:"deleteRequested"`
    Deleted         time.Time    `json:"deleted" yaml:"deleted"`

    // KubernetesAPIEndpoints API endpoints provisioned in this location
    KubernetesAPIEndpoints []string `json:"kubernetesApiEndpoints" yaml:"kubernetesApiEndpoints"`
    // KubernetesAPIEndpointURLs API endpoint URLs provisioned in this location
    KubernetesAPIEndpointURLs []string `json:"kubernetesApiEndpointUrls" yaml:"kubernetesApiEndpointUrls"`
}

type LoggingFeatureState

LoggingFeatureState represents state of the logging feature.

type LoggingFeatureState struct {
    // KibanaEndpoint represents the endpoint address for kibana service.
    KibanaEndpoint string `json:"kibanaEndpoint" yaml:"kibanaEndpoint" bson:"kibanaEndpoint"`
    // RabbitmqEndpoint represents the endpoint address for rabbitmq service.
    RabbitmqEndpoint string `json:"rabbitmqEndpoint" yaml:"rabbitmqEndpoint" bson:"rabbitmqEndpoint"`
    // Condition represents status of the logging feature.
    // Deprecated
    Condition Condition `json:"condition" yaml:"condition" bson:"condition"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type MasterELBAllocationPolicyEnum

MasterELBAllocationPolicyEnum -

type MasterELBAllocationPolicyEnum string

type MonitoringFeatureState

MonitoringFeatureState represents state of the app-monitoring feature.

type MonitoringFeatureState struct {
    // Condition represents status of the app-monitoring feature.
    Condition Condition `json:"condition" yaml:"condition" bson:"condition"`

    // AlertManagerEndpoint represents the endpoint address for AlertManager service.
    AlertManagerEndpoint string `json:"alertManagerEndpoint" yaml:"alertManagerEndpoint" bson:"alertManagerEndpoint"`
    // AlertManagerServiceName represents AlertManager service name.
    AlertManagerServiceName string `json:"alertManagerServiceName" yaml:"alertManagerServiceName" bson:"alertManagerServiceName"`

    // GrafanaEndpoint represents the endpoint address for grafana service.
    GrafanaEndpoint string `json:"grafanaEndpoint" yaml:"grafanaEndpoint" bson:"grafanaEndpoint"`
    // GrafanaServiceName represents Grafana service name.
    GrafanaServiceName string `json:"grafanaServiceName" yaml:"grafanaServiceName" bson:"grafanaServiceName"`
    // GrafanaSecretName represents Grafana secret name.
    GrafanaSecretName string `json:"grafanaSecretName" yaml:"grafanaSecretName" bson:"grafanaSecretName"`

    // PrometheusEndpoint represents the endpoint address for Prometheus service.
    PrometheusEndpoint string `json:"prometheusEndpoint" yaml:"prometheusEndpoint" bson:"prometheusEndpoint"`
    // PrometheusServiceName represents Prometheus service name.
    PrometheusServiceName string `json:"prometheusServiceName" yaml:"prometheusServiceName" bson:"prometheusServiceName"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type MonitoringPlatformClientSpec

MonitoringPlatformClientSpec is a specification for Centralized Monitoring Client installation (installs on KCP managed clusters)

type MonitoringPlatformClientSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

    Prometheus *PrometheusSpec `json:"prometheus,omitempty" yaml:"prometheus,omitempty"`
}

type MonitoringPlatformSpec

MonitoringPlatformSpec is a specification for Centralized Monitoring Host installation (installs on KCP cluster)

type MonitoringPlatformSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

    // AlertManager is a spec for AlertManager installation
    AlertManager *AlertManagerSpec `json:"alertmanager,omitempty" yaml:"alertmanager,omitempty"`
    // Prometheus is a spec for Prometheus installation
    Prometheus *PrometheusSpec `json:"prometheus,omitempty" yaml:"prometheus,omitempty"`
    // Grafana is a spec for Grafana installation
    Grafana *GrafanaSpec `json:"grafana,omitempty" yaml:"grafana,omitempty"`
}

type MonitoringSelfHostedSpec

MonitoringSelfHostedSpec is a specification for Self-Hosted Monitoring installation

type MonitoringSelfHostedSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

    // AlertManager is a spec for AlertManager installation
    AlertManager *AlertManagerSpec `json:"alertmanager,omitempty" yaml:"alertmanager,omitempty"`
    // Prometheus is a spec for Prometheus installation
    Prometheus *PrometheusSpec `json:"prometheus,omitempty" yaml:"prometheus,omitempty"`
    // Grafana is a spec for Grafana installation
    Grafana *GrafanaSpec `json:"grafana,omitempty" yaml:"grafana,omitempty"`
}

type NetworkSpec

NetworkSpec is a spec of network.

type NetworkSpec struct {
    Provider            *string   `json:"provider,omitempty" yaml:"provider,omitempty"`
    ClusterCIDR         *string   `json:"clusterCIDR,omitempty" yaml:"clusterCIDR,omitempty"`
    ServiceCIDR         *string   `json:"serviceCIDR,omitempty" yaml:"serviceCIDR,omitempty"`
    PodCIDR             *string   `json:"podCIDR,omitempty" yaml:"podCIDR,omitempty"`
    MasterIP            *string   `json:"masterIP,omitempty" yaml:"masterIP,omitempty"`
    DNSIp               *string   `json:"dnsIP,omitempty" yaml:"dnsIP,omitempty"`
    DNSDomain           *string   `json:"dnsDomain,omitempty" yaml:"dnsDomain,omitempty"`
    APIServerSecurePort *int      `json:"apiServerSecurePort,omitempty" yaml:"apiServerSecurePort,omitempty"`
    UpstreamNameservers []*string `json:"upstreamNameservers,omitempty" yaml:"upstreamNameservers,omitempty"`
    // LocalDnsIP is IP address for dns caching agent on cluster nodes to improve DNS performance
    //+optional
    LocalDNSIP *string `json:"localDnsIP,omitempty" yaml:"localDnsIP,omitempty" bson:"localDnsIP,omitempty"`
    // DnsProvider can be coredns or kubedns
    //+optional
    DNSProvider *string `json:"dnsProvider,omitempty" yaml:"dnsProvider,omitempty" bson:"dnsProvider,omitempty"`
    // EnableLocalDNS is a flag that indicates the use of a DNS caching agent on a cluster node.
    EnableLocalDNS *bool `json:"enableLocalDns,omitempty" yaml:"enableLocalDns,omitempty" bson:"enableLocalDns,omitempty"`
    // StubDomains define dns servers to delegate dns zone
    //+optional
    StubDomains []*StubDomainSpec `json:"stubDomains,omitempty" yaml:"stubDomains,omitempty" bson:"stubDomains,omitempty"`
}

type NginxClusterIngressControllerSpec

NginxClusterIngressControllerSpec is a spec for NGINX Ingress Controller.

type NginxClusterIngressControllerSpec struct {
    Acme    *AcmeSpec `json:"acme,omitempty" yaml:"acme,omitempty" bson:"acme,omitempty"`
    Enabled *bool     `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
    // UseHostPort enables using DaemonSet and hostPort for Pod
    // That allows to use a different host port for ingress controller
    UseHostPort bool `json:"useHostPort,omitempty" yaml:"useHostPort,omitempty" bson:"useHostPort,omitempty"`
    // HostPortHTTP defines http host port for ingress controller
    // This field is used only when UseHostPort is enabled.
    // Default: 80
    HostPortHTTP *int32 `json:"hostPortHttp,omitempty" yaml:"hostPortHttp,omitempty" bson:"hostPortHttp,omitempty"`
    // HostPortHTTPS defines https host port for ingress controller
    // This field is used only when UseHostPort is enabled.
    // Default: 443
    HostPortHTTPS *int32 `json:"hostPortHttps,omitempty" yaml:"hostPortHttps,omitempty" bson:"hostPortHttps,omitempty"`
    // LoadBalancerAddress is the load balancing address for ingress controller
    //+optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty" bson:"loadBalancerAddress,omitempty"`
    // LoadBalancerPortHTTP defines load balancing http port for ingress controller
    // Default: 80
    LoadBalancerPortHTTP *int32 `json:"loadBalancerPortHttp,omitempty" yaml:"loadBalancerPortHttp,omitempty" bson:"loadBalancerPortHttp,omitempty"`
    // HostPortHTTPS defines load balancing https port for ingress controller
    // Default: 443
    LoadBalancerPortHTTPS *int32 `json:"loadBalancerPortHttps,omitempty" yaml:"loadBalancerPortHttps,omitempty" bson:"loadBalancerPortHttps,omitempty"`
}

type NodeCondition

NodeCondition represents node condition

type NodeCondition struct {
    // Type is the type of the condition.
    Type NodeConditionType `json:"type,omitempty" yaml:"type,omitempty" bson:"type,omitempty"`

    // Status is the status of the condition.
    // Can be True, False, Unknown.
    Status ConditionStatus `json:"status,omitempty" yaml:"status,omitempty" bson:"status,omitempty"`

    // Last time we probed the condition.
    // +optional
    LastHeartbeatTime time.Time `json:"lastHeartbeatTime,omitempty" yaml:"lastHeartbeatTime,omitempty" bson:"lastHeartbeatTime,omitempty"`

    // Last time the condition transitioned from one status to another.
    // +optional
    LastTransitionTime time.Time `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty" bson:"lastTransitionTime,omitempty"`

    // Unique, one-word, CamelCase reason for the condition's last transition.
    // +optional
    Reason string `json:"reason,omitempty" yaml:"reason,omitempty" bson:"reason,omitempty"`

    // Human-readable message indicating details about last transition.
    // +optional
    Message string `json:"message,omitempty" yaml:"message,omitempty" bson:"message,omitempty"`
}

type NodeConditionType

NodeConditionType represents the type of the node condition

type NodeConditionType string

type NodeDeletingState

NodeDeletingState represents available node’s states during deleting

type NodeDeletingState string

type NodeIPAllocationPolicyEnum

NodeIPAllocationPolicyEnum - enum for policy

type NodeIPAllocationPolicyEnum string

type NodePhase

NodePhase is a label for the condition of a node at the current time.

type NodePhase string

type NodeState

NodeState is a state object for the node of cluster

type NodeState struct {
    // Identifier of node
    // +required
    Identifier string `json:"identifier" yaml:"identifier" bson:"identifier"`

    // Ordinal of node uses only for stateful groups
    // +optional
    Ordinal *int `json:"ordinal,omitempty" yaml:"ordinal,omitempty" bson:"ordinal,omitempty"`

    // The name of kubernetes node
    // +optional
    Name string `json:"name,omitempty" yaml:"name,omitempty" bson:"name,omitempty"`

    // Phase represents the current phase of machine actuation.
    // The phase of a Node is a simple, high-level summary of where the Node is in its lifecycle.
    // The conditions array, the reason and message fields, and the individual container status
    // arrays contain more detail about the node status.
    // There are five possible phase values: Pending, Running, Updating, Terminating, Failed, Unknown.
    // +optional
    Phase NodePhase `json:"phase,omitempty" yaml:"phase,omitempty" bson:"phase,omitempty"`

    // Current service state of node.
    Conditions []NodeCondition `json:"conditions,omitempty" yaml:"conditions,omitempty" bson:"conditions,omitempty"`

    // KublrAgentSha256Received is checksum of binary Kublr agent received from Seeder
    KublrAgentSha256Received string `json:"kublrAgentSha256Received,omitempty" yaml:"kublrAgentSha256Received,omitempty" bson:"kublrAgentSha256Received,omitempty"`

    // KublrAgentExtSha256Received is checksum of extensions of Kublr agent received from Seeder
    KublrAgentExtSha256Received map[string]string `json:"kublrAgentExtSha256Received,omitempty" yaml:"kublrAgentExtSha256Received,omitempty" bson:"kublrAgentExtSha256Received,omitempty"`

    // KublrAgentCfgSha256Received is checksum of configuration of Kublr agent received from Seeder
    KublrAgentCfgSha256Received string `json:"kublrAgentCfgSha256Received,omitempty" yaml:"kublrAgentCfgSha256Received,omitempty" bson:"kublrAgentCfgSha256Received,omitempty"`

    // KublrAgentSha256 is checksum of binary Kublr agent that is set in manifest.yaml to Seeder
    // +optional
    KublrAgentSha256 string `json:"kublrAgentSha256,omitempty" yaml:"kublrAgentSha256,omitempty" bson:"kublrAgentSha256,omitempty"`

    // KublrAgentExtSha256 is checksum of extensions of Kublr agent that is set in manifest.yaml to Seeder
    KublrAgentExtSha256 map[string]string `json:"kublrAgentExtSha256,omitempty" yaml:"kublrAgentExtSha256,omitempty" bson:"kublrAgentExtSha256,omitempty"`

    // KublrAgentCfgSha256 is checksum of configuration of Kublr agent that is set in manifest.yaml to Seeder
    // +optional
    KublrAgentCfgSha256 string `json:"kublrAgentCfgSha256,omitempty" yaml:"kublrAgentCfgSha256,omitempty" bson:"kublrAgentCfgSha256,omitempty"`

    // KublrAgentCfgSha256Desired is checksum of configuration of Kublr agent that should be set after update cluster
    // This field is used only in stateful and onprem instace groups
    KublrAgentCfgSha256Desired string `json:"kublrAgentCfgSha256Desired,omitempty" yaml:"kublrAgentCfgSha256Desired,omitempty" bson:"kublrAgentCfgSha256Desired,omitempty"`

    // KublrAgentSource specifies URL and credentials for Kublr agent binary
    // This field is only used during cluster update.
    KublrAgentSource *SourceDescr `json:"kublrAgentSource,omitempty" yaml:"kublrAgentSource,omitempty" bson:"kublrAgentSource,omitempty"`

    // KublrAgentExtSource specifies a map of sources (URL + credentials) for Kublr agent extensions to use
    KublrAgentExtSource map[string]*SourceDescr `json:"kublrAgentExtSource,omitempty" yaml:"kublrAgentExtSource,omitempty" bson:"kublrAgentExtSource,omitempty"`
}

type NodeToDelete

NodeToDelete contains resources IDs needed to delete node during the execution of the Update command

type NodeToDelete struct {
    VMID               string            `json:"vmId" yaml:"vmId"`
    OsDiskID           string            `json:"osDiskId" yaml:"osDiskId"`
    NetworkInterfaceID string            `json:"networkInterfaceId" yaml:"networkInterfaceId"`
    State              NodeDeletingState `json:"state" yaml:"state"`
}

type ObjectMeta

ObjectMeta is kublr object metadata

type ObjectMeta struct {
    Name             string    `valid:"alphanum,required" json:"name" yaml:"name"`
    CreatedTimestamp time.Time `json:"createdAt,omitempty" yaml:"createdAt,omitempty"`
    UpdatedTimestamp time.Time `json:"updatedAt,omitempty" yaml:"updatedAt,omitempty"`

    // Map of string keys and values that can be used to organize and categorize (scope and select) objects.
    // +optional
    Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`

    // Space defines the name of the space
    // Not all objects are required to be scoped to a space - the value of this field for
    // those objects will be empty.
    Space string `json:"space,omitempty" yaml:"space,omitempty" bson:"space,omitempty"`

    // An opaque value that represents the internal version of this object that can
    // be used by clients to determine when objects have changed. May be used for optimistic
    // concurrency, change detection, and the watch operation on a resource or set of resources.
    // Clients must treat these values as opaque and passed unmodified back to the server.
    ResourceVersion int `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty" bson:"resourceVersion,omitempty"`

    // List of objects depended by this object.
    // +optional
    OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty" bson:"ownerReferences,omitempty"`
}

type ObjectReference

ObjectReference is a reference to the associated object.

type ObjectReference struct {
    TypeMeta  `json:",inline" yaml:",inline"`
    Namespace string `json:"namespace" yaml:"namespace"`
    Name      string `json:"name" yaml:"name"`
    UID       string `json:"uid" yaml:"uid"`
}

type Owner

Owner represents owner of the entity.

type Owner struct {
    // UserID holds ID of the owner.
    UserID string `json:"userId" bson:"userId,omitempty" yaml:"userId"`
}

type OwnerReference

OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same space, so there is no space field.

type OwnerReference struct {
    // API version of the referent.
    APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" bson:"apiVersion,omitempty"`
    // Kind of the referent.
    Kind string `json:"kind" yaml:"kind" bson:"kind"`
    // Name of the referent.
    Name string `json:"name" yaml:"name" bson:"name"`
    // ID of the referent.
    ID string `json:"id" yaml:"id" bson:"id"`
}

type OwnerReferenceFilter

OwnerReferenceFilter describes filter for OwnerReference

type OwnerReferenceFilter func(OwnerReference) bool

type OwnerableEntity

OwnerableEntity described general owner model

type OwnerableEntity interface {
    IdentifiableEntity
    GetOwner() *Owner
    SetOwner(owner *Owner)
}

type PackageStates

PackageStates represents the state of the cluster packages.

type PackageStates struct {
    // Packages is the state of all clustered packages
    Packages map[string]*ClusterPackageState `json:"packages,omitempty" yaml:"packages,omitempty" bson:"packages,omitempty"`
}

type PolicyRule

PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which space the rule applies to.

type PolicyRule struct {
    // Resources is a list of resources this rule applies to. '*' represents all resources.
    Resources []string `json:"resources" yaml:"resources"`

    // Action constraints
    // 1. allowed actions - e.g. "get", "list", "put", "post", "delete"
    // 2. "*" means all actions allowed
    Verbs []string `json:"verbs" yaml:"verbs"`

    // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
    // +optional
    ResourceNames []string `json:"resourceNames,omitempty" yaml:"resourceNames,omitempty" bson:"resourceNames,omitempty"`

    // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
    // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
    // Rules can either apply to API resources (such as "clusters" or "secrets") or non-resource URL paths (such as "/metrics"),  but not both.
    // +optional
    NonResourceURLs []string `json:"nonResourceURLs,omitempty" yaml:"nonResourceURLs,omitempty" bson:"nonResourceURLs,omitempty"`
}

type ProcessDescr

ProcessDescr specification of a process (e.g. seeder or agent) configuration

type ProcessDescr struct {
    Source     *SourceDescr           `json:"source,omitempty" yaml:"source,omitempty"`
    Config     AgentConfigMap         `json:"config,omitempty" yaml:"config,omitempty"`
    Extensions map[string]SourceDescr `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

type ProcessesDescr

ProcessesDescr specification of processes (seeder and agent) configuration

type ProcessesDescr struct {
    Seeder *ProcessDescr `json:"seeder,omitempty" yaml:"seeder,omitempty"`
    Agent  *ProcessDescr `json:"agent,omitempty" yaml:"agent,omitempty"`
}

type ProcessesSpec

ProcessesSpec is a block of seeder and agent parameters re-used and overridable in ClusterSpec, LocationSpec, InstanceGroupSpec, and InstanceGroupLocationSpec

type ProcessesSpec struct {
    // KublrSeederTgzURL specifies URL of Kublr seeder to use
    // +optional
    KublrSeederTgzURL *string `json:"kublrSeederTgzUrl,omitempty" yaml:"kublrSeederTgzUrl,omitempty"`
    // KublrSeederRepositorySecretRef specifies reference to the secret object containing username/password to access Kublr seeder repository
    // +optional
    KublrSeederRepositorySecretRef *string `json:"kublrSeederRepositorySecretRef,omitempty" yaml:"kublrSeederRepositorySecretRef,omitempty"`
    // KublrAgentTgzURL specifies URL of Kublr agent to use
    // +optional
    KublrAgentTgzURL *string `json:"kublrAgentTgzUrl,omitempty" yaml:"kublrAgentTgzUrl,omitempty"`
    // KublrAgentRepositorySecretRef specifies reference to the secret object containing username/password to access Kublr agent repository
    // +optional
    KublrAgentRepositorySecretRef *string `json:"kublrAgentRepositorySecretRef,omitempty" yaml:"kublrAgentRepositorySecretRef,omitempty"`

    // KublrSeederConfig allows to override Kublr seeder configuration
    //+optional
    KublrSeederConfig AgentConfigMap `json:"kublrSeederConfig,omitempty" yaml:"kublrSeederConfig,omitempty"`
    // KublrAgentConfig allows to override Kublr agent configuration
    //+optional
    KublrAgentConfig AgentConfigMap `json:"kublrAgentConfig,omitempty" yaml:"kublrAgentConfig,omitempty"`

    // KublrAgentExtensions allows to specify Kublr agent extensions
    KublrAgentExtensions AgentExtensionsMap `json:"kublrAgentExtensions,omitempty" yaml:"kublrAgentExtensions,omitempty"`
}

type PrometheusSpec

PrometheusSpec is a spec for Prometheus installation

type PrometheusSpec struct {
    // Persistent indicates if storage is enabled.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
}

type RegisterNode

RegisterNode - Entity to register or unregister from the cluster.

Can be used for node or master hosts.
type RegisterNode struct {
    //name from the location specification
    LocationRef string `json:"locationRef" yaml:"locationRef"`
    //name from the instance group specification
    InstanceGroupRef string `json:"instanceGroupRef" yaml:"instanceGroupRef"`
    // host IP address
    Address string `json:"address" yaml:"address"`
}

type RemoveCommand

RemoveCommand specifies the command to remove an existing node from the location state.

type RemoveCommand struct {
    // NodeOrdinal is an ordinal within group.
    NodeOrdinal int64 `json:"nodeOrdinal" yaml:"nodeOrdinal"`
    // Command is a command to be executed to init a node.
    Command string `json:"command" yaml:"command"`
}

type ResourceID

ResourceID is a Resource ID

type ResourceID string

type ResourceState

ResourceState contains deployment resource state

type ResourceState struct {
    ID                ResourceID `json:"id" yaml:"id"`
    Name              string     `json:"name" yaml:"name"`
    ProvisioningState string     `json:"provisioningState" yaml:"provisioningState"`
    StatusCode        string     `json:"statusCode" yaml:"statusCode"`
}

type RoleRef

RoleRef contains information that points to the role being used

type RoleRef struct {
    // Kind of the referred role
    // 1. currently "GlobalRole" and "SpaceRole" are supported
    // 2. "GlobalRole" kind ref may be in a GlobalRoleBinding or in a SpaceRoleBinding
    // 3. "SpaceRole" kind ref may only be in a SpaceRoleBinding
    Kind string `json:"kind" yaml:"kind"`
    // Name of the referred role
    Name string `json:"name" yaml:"name"`
}

type SSHPrivateKeySpec

SSHPrivateKeySpec is a spec for SSH Private Key.

type SSHPrivateKeySpec struct {
    Fingerprint   string `json:"fingerprint" yaml:"fingerprint"`
    SSHPrivateKey string `json:"sshPrivateKey" yaml:"sshPrivateKey"`
}

type SSHPublicKeySpec

SSHPublicKeySpec is a spec for SSH Key.

type SSHPublicKeySpec struct {
    Fingerprint  string `json:"fingerprint" yaml:"fingerprint"`
    SSHPublicKey string `json:"sshPublicKey" yaml:"sshPublicKey"`
}

type ScheduleInterval

ScheduleInterval - interval for scheduler

type ScheduleInterval struct {
    Interval int `json:"interval" yaml:"interval" bson:"interval"`
    Number   int `json:"number" yaml:"number" bson:"number"`
}

type Secret

Secret is a definition of Secret.

type Secret struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    Spec   SecretSpec   `json:"spec" yaml:"spec"`
    Status SecretStatus `json:"status" yaml:"status"`
    Owner  *Owner       `json:"-" yaml:"-"`
}

type SecretListResult

SecretListResult holds secrets.

type SecretListResult struct {
    Total int      `json:"total" yaml:"total"`
    Items []Secret `json:"items" yaml:"items"`
}

type SecretSpec

SecretSpec is a definition of secret.

type SecretSpec struct {
    // AwsAPIAccessKey is a definition of AWS Access Key and Secret.
    AwsAPIAccessKey *AwsAPIAccessKeySpec `json:"awsApiAccessKey,omitempty" yaml:"awsApiAccessKey,omitempty" bson:"awsApiAccessKey,omitempty"`
    // AzureAPIAccessKey is a definition of Azure credentials
    AzureAPIAccessKey *AzureAPIAccessKey `json:"azureApiAccessKey,omitempty" yaml:"azureApiAccessKey,omitempty" bson:"azureApiAccessKey,omitempty"`
    // GCPAPIAccessKey is a definition of GCP credentials
    GCPAPIAccessKey *GCPAPIAccessKeySpec `json:"gcpApiAccessKey,omitempty" yaml:"gcpApiAccessKey,omitempty" bson:"gcpApiAccessKey,omitempty"`
    // VCDAPIAccessKey is a definition of VMware vCD credentials
    VCDAPIAccessKey *VCDAPIAccessKeySpec `json:"vcdApi,omitempty" yaml:"vcdApi,omitempty" bson:"vcdApi,omitempty"`
    // VSphereAccessKey is a definition of vSphere credentials
    VSphereAccessKey *VSphereAPISpec `json:"vSphereApi,omitempty" yaml:"vSphereApi,omitempty" bson:"vSphereApi,omitempty"`

    SSHPrivateKeySpec *SSHPrivateKeySpec `json:"sshPrivateKeySpec,omitempty" yaml:"sshPrivateKeySpec,omitempty" bson:"sshPrivateKeySpec,omitempty"`
    SSHPublicKeySpec  *SSHPublicKeySpec  `json:"sshKey,omitempty" yaml:"sshKey,omitempty" bson:"sshKey,omitempty"`

    UsernamePasswordSpec *UsernamePasswordSpec `json:"usernamePassword,omitempty" yaml:"usernamePassword,omitempty" bson:"usernamePassword,omitempty"`

    // SpotinstAccessToken is a spec of Spotinst access token.
    // +optional
    SpotinstAccessToken *SpotinstAccessTokenSpec `json:"spotinstAccessToken,omitempty" yaml:"spotinstAccessToken,omitempty" bson:"spotinstAccessToken,omitempty"`

    // DockerRegistry is a definition of Docker Registry credentials
    DockerRegistry *DockerRegistrySecretSpec `json:"dockerRegistry,omitempty" yaml:"dockerRegistry,omitempty" bson:"dockerRegistry,omitempty"`

    // Kubeconfig is a definition of secret used to access Kubernetes API
    Kubeconfig *KubeconfigSpec `json:"kubeconfig,omitempty" yaml:"kubeconfig,omitempty" bson:"kubeconfig,omitempty"`
}

type SecretStatus

SecretStatus holds status of the secret.

type SecretStatus struct {
    Status string `json:"status,omitempty" yaml:"status,omitempty"`
}

type SecretStoreSpec

SecretStoreSpec is a spec of secret storage.

type SecretStoreSpec struct {
    Baremetal        *BaremetalSecretStoreSpec        `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    AwsS3            *AwsS3SecretStoreSpec            `json:"awsS3,omitempty" yaml:"awsS3,omitempty"`
    AzureAS          *AzureASSecretStoreSpec          `json:"azureAS,omitempty" yaml:"azureAS,omitempty"`
    GoogleGCS        *GoogleGCSSecretStoreSpec        `json:"googleGCS,omitempty" yaml:"googleGCS,omitempty"`
    VcdCatalog       *VCDCatalogSecretStoreSpec       `json:"vcdCatalog,omitempty" yaml:"vcdCatalog,omitempty"`
    VSphereDatastore *VSphereDatastoreSecretStoreSpec `json:"vSphereDatastore,omitempty" yaml:"vSphereDatastore,omitempty"`
    KublrAgent       *KublrAgentSecretStoreSpec       `json:"kublrAgent,omitempty" yaml:"kublrAgent,omitempty"`
}

type SelfHostedClusterLogSinkSpec

SelfHostedClusterLogSinkSpec is a spec for self-hosted cluster wide logging.

type SelfHostedClusterLogSinkSpec struct {
    // Enabled indicates if this sink is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if this sink is persistent.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
    // MasterNodes is the number of master nodes that control the cluster.
    // number of master nodes is must not be 2, need to use 1 or 3 and more
    MasterNodes *int `json:"masterNodes,omitempty" yaml:"masterNodes,omitempty" bson:"masterNodes"`
    // DataNodes is the number of data nodes that hold data and perform data related operations such as CRUD, search, and aggregations.
    DataNodes *int `json:"dataNodes,omitempty" yaml:"dataNodes,omitempty" bson:"dataNodes"`
    // ClientNodes is the number of client nodes which serve client requests.
    ClientNodes *int `json:"clientNodes,omitempty" yaml:"clientNodes,omitempty" bson:"clientNodes"`
    // LogstashReplicas is the number of logstash which transfer logs from logsmover/rabbitmq to elasticsearch.
    LogstashReplicas *int `json:"logstashReplicas,omitempty" yaml:"logstashReplicas,omitempty" bson:"logstashReplicas,omitempty"`
    // RetentionPeriodDays represents how old (in days) should be an Elasticsearch index to be deleted by Curator
    RetentionPeriodDays *int `json:"retentionPeriodDays,omitempty" yaml:"retentionPeriodDays,omitempty" bson:"retentionPeriodDays,omitempty"`
}

type SnapshotStatus

SnapshotStatus represent status of the snapshot.

type SnapshotStatus string

type SnapshotTag

SnapshotTag - type for tag

type SnapshotTag struct {
    Name  string `json:"name" yaml:"name" bson:"name"`
    Value string `json:"value" yaml:"value" bson:"value"`
}

type SourceDescr

SourceDescr specification of a binary file source

type SourceDescr struct {
    TgzURL    *string `json:"tgzUrl,omitempty" yaml:"tgzUrl,omitempty"`
    SecretRef *string `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`

    // Username and Password fields are used only if deprecated KublrAgentRepositoryUsername and
    // KublrAgentRepositoryPassword fields are used in the cluster spec
    Username *string `json:"username,omitempty" yaml:"username,omitempty"`
    Password *string `json:"password,omitempty" yaml:"password,omitempty"`
}

type Space

Space is environment that delimits the scope of cluster.

type Space struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
}

type SpaceListResult

SpaceListResult is a collection of Space

type SpaceListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roles
    Items []Space `json:"items" yaml:"items"`
}

type SpaceRole

SpaceRole is in space scope, must be in a specific space

type SpaceRole struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Rules holds all the PolicyRules for this Role
    Rules []PolicyRule `json:"rules" yaml:"rules"`
}

type SpaceRoleBinding

SpaceRoleBinding is in space role, must be in a specific space

type SpaceRoleBinding struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // RoleRef can reference a SpaceRole in the current space or a GlobalRole in the global space.
    RoleRef RoleRef `json:"roleRef" yaml:"roleRef"`
    // Subjects holds references to the objects the role applies to.
    Subjects []Subject `json:"subjects" yaml:"subjects"`
}

type SpaceRoleBindingListResult

SpaceRoleBindingListResult is a collection of SpaceRoleBindings

type SpaceRoleBindingListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roleBindings
    Items []SpaceRoleBinding `json:"items" yaml:"items"`
}

type SpaceRoleListResult

SpaceRoleListResult is a collection of SpaceRoles

type SpaceRoleListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roles
    Items []SpaceRole `json:"items" yaml:"items"`
}

type SpotinstAccessTokenSpec

SpotinstAccessTokenSpec is a spec for Spotinst Access Token.

type SpotinstAccessTokenSpec struct {
    AccountID   string `json:"accountId" yaml:"accountId" bson:"accountId"`
    AccessToken string `json:"accessToken" yaml:"accessToken" bson:"accessToken"`
}

type StringMap

StringMap is a generic map with string keys

type StringMap map[string]interface{}

type StubDomainSpec

StubDomainSpec is a spec of stub domain to delegate dns zone

type StubDomainSpec struct {
    DNS     *string   `json:"dns,omitempty" yaml:"dns,omitempty" bson:"dns"`
    Servers []*string `json:"servers,omitempty" yaml:"servers,omitempty" bson:"servers"`
}

type Subject

Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.

type Subject struct {
    // Kind of object being referenced. Values defined are "User", "Group".
    // If the Authorizer does not recognized the kind value, the Authorizer should report an error.
    Kind string `json:"kind" yaml:"kind"`
    // Name of the object being referenced.
    Name string `json:"name" yaml:"name"`
}

type SystemFeatureSpec

SystemFeatureSpec is a spec for kublr-system feature.

type SystemFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`
    // LocalPathProvisioner is configuration for local host path provisioner
    LocalPathProvisioner *LocalPathProvisioner `json:"localPathProvisioner,omitempty" yaml:"localPathProvisioner,omitempty" bson:"localPathProvisioner,omitempty"`
}

type TerraformOperation

TerraformOperation represents Terraform Operation

type TerraformOperation struct {
    ID     string                 `json:"id" yaml:"id"`
    Type   TerraformOperationType `json:"type" yaml:"type"`
    Status string                 `json:"status" yaml:"status"`
}

type TerraformOperationType

TerraformOperationType is a Terraform Operation Type

type TerraformOperationType string

type TerraformState

TerraformState represents state of Terraform

type TerraformState struct {
    ActiveTerraformOperation *TerraformOperation `json:"activeTerraformOperation,omitempty" yaml:"activeTerraformOperation,omitempty" bson:"activeTerraformOperation,omitempty"`
    State                    string              `json:"state,omitempty" yaml:"state,omitempty"  bson:"state,omitempty"`
}

type Type

Type represents the stored type of Int32OrString.

type Type int

type TypeMeta

TypeMeta describes an individual object in an API response or request with strings representing the type of the object and its API schema version. Structures that are versioned or persisted should inline TypeMeta.

type TypeMeta struct {
    // Kind is a string value representing the REST resource this object represents.
    // Servers may infer this from the endpoint the client submits requests to.
    Kind string `valid:"alphanum,required" json:"kind,omitempty" yaml:"kind,omitempty"`

    // APIVersion defines the versioned schema of this representation of an object.
    // Servers should convert recognized schemas to the latest internal value, and
    // may reject unrecognized values.
    APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
}

type UpdateStage

UpdateStage is an update stages enum

type UpdateStage string

type User

User holds the information about the user. Information about the user is obtained from the request authentication token

type User struct {
    ID string `json:"id,omitempty" yaml:"id,omitempty"`

    // Username must be unique
    Username string `json:"username,omitempty" yaml:"username,omitempty"`

    // FirstName, may be empty
    FirstName string `json:"firstName,omitempty" yaml:"firstName,omitempty"`

    // LastName, may be empty
    LastName string `json:"lastName,omitempty" yaml:"lastName,omitempty"`

    // Email, may be empty
    Email string `json:"email,omitempty" yaml:"email,omitempty"`

    // Roles list of roles
    Roles []string `json:"roles,omitempty" yaml:"roles,omitempty"`

    // Groups list of groups
    Groups []string `json:"groups,omitempty" yaml:"groups,omitempty"`
}

type UsernamePasswordSpec

UsernamePasswordSpec is a spec for Username/Password secret type.

type UsernamePasswordSpec struct {
    Username string `json:"username" yaml:"username" bson:"username"`
    Password string `json:"password" yaml:"password" bson:"password"`
}

type VCDAPIAccessKeySpec

VCDAPIAccessKeySpec VMware vCloud Director (vCD) Secret

type VCDAPIAccessKeySpec struct {
    // URL is the URL for the vCloud Director API endpoint. e.g. https://server.domain.com/api.
    // Required
    URL string `json:"url" yaml:"url" bson:"url"`
    // Org is the vCloud Director Org on which to run API operations.
    // Required
    Org string `json:"org" yaml:"org" bson:"org"`
    // Username is the username for vCloud Director API operations.
    // Required
    Username string `json:"username" yaml:"username" bson:"username"`
    // Password is the password for vCloud Director API operations.
    // Required
    Password string `json:"password" yaml:"password" bson:"password"`
    // Insecure can be set to true to disable SSL certificate verification. Default value is false
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
}

type VCDCatalogSecretStoreSpec

VCDCatalogSecretStoreSpec is a spec for secret store in Azure Account Storage.

type VCDCatalogSecretStoreSpec struct {
    // LocationRef is a reference to Location
    LocationRef string `json:"locationRef" yaml:"locationRef"`
    // CatalogName is a name of Catalog
    CatalogName *string `json:"catalogName,omitempty" yaml:"catalogName,omitempty"`
    // CatalogPath is a Catalog path
    CatalogPath *string `json:"catalogPath,omitempty" yaml:"catalogPath,omitempty"`
}

type VCDDataDiskSpec

VCDDataDiskSpec - disk spec

type VCDDataDiskSpec struct {
    // SizeGb is a disk size (in Gb)
    // Required
    SizeGb *int `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty"`
    // Iops (Optional) IOPS request
    Iops *int `json:"iops,omitempty" yaml:"iops,omitempty"`
    // BusType is a disk bus type. Must be one of:
    //  - '5' IDE bus
    //  - '6' SCSI bus
    //  - '20' SATA bus
    // If omitted - SCSI bus will be used
    // Optional
    BusType *string `json:"busType,omitempty" yaml:"busType,omitempty"`
    // BusSubType is a disk bus subtype. Must be one of:
    //  - '' IDE, requires IDE busType
    //  - 'buslogic' BusLogic Parallel SCSI controller, requires SCSI busType
    //  - 'lsilogic' LSI Logic Parallel SCSI controller, requires SCSI busType
    //  - 'lsilogicsas' LSI Logic SAS SCSI controller, requires SCSI busType
    //  - 'VirtualSCSI' Paravirtual SCSI controller, requires SCSI busType
    //  - 'vmware.sata.ahci'  SATA controller, requires SATA busType
    // If omitted - Paravirtual SCSI controller will be used
    // Optional
    BusSubType *string `json:"busSubType,omitempty" yaml:"busSubType,omitempty"`
    // StorageProfile is the storage profile name to be used for Disk storage.
    // If omitted - default VDC storage profile will be used
    // Optional
    StorageProfile *string `json:"storageProfile,omitempty" yaml:"storageProfile,omitempty"`
}

type VCDInstanceGroupLocationSpec

VCDInstanceGroupLocationSpec - instances group location

type VCDInstanceGroupLocationSpec struct {
    // LoadBalancerAddress is a Load balancing address for K8S API Server.
    // Only mandatory for multi-master configurations.
    // Optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty"`
    // IPAddressAllocationMode is an IP Address allocation mode (i.e. MANUAL, POOL, DHCP).
    // If ommitted - POOL will be used.
    // Optional
    IPAddressAllocationMode *VCDSIPAddressAllocationMode `json:"ipAddressAllocationMode,omitempty" yaml:"ipAddressAllocationMode,omitempty"`
    // IPAddresses  is a list of IP addresses for VM's in current group location.
    // Only mandatory for MANUAL ipAddressAllocationMode.
    // Optional
    IPAddresses []*string `json:"ipAddresses,omitempty" yaml:"ipAddresses,omitempty"`
    // VM is a VM template
    // Required
    VM *VCDVirtualMachineTemplate `json:"vm,omitempty" yaml:"vm,omitempty"`
}

type VCDLocationSpec

VCDLocationSpec holds location specification for VMware vCloud Director installations.

type VCDLocationSpec struct {
    // VCDApiSecretRef is a reference to the VCDAPIAccessSpec secret object.
    // Required
    VCDApiSecretRef *string `json:"vcdApiSecretRef,omitempty" yaml:"vcdApiSecretRef,omitempty"`
    // Org is  a vCloud Director Organization
    // If omitted, it will be populated automatically based from the corresponding secret.
    // If populated, it must be the same as the org value in the corresponding secret.
    Org *string `json:"org,omitempty" yaml:"org,omitempty"`
    // Vdc Virtual Datacenter Name.
    // Required
    Vdc *string `json:"vdc,omitempty" yaml:"vdc,omitempty"`
    // OrgNetwork is a org Network Name.
    // If provided - cluster vApp will be directly connected to this Org Network
    // If omitted - new vAppNetwork will be created.
    // Optional
    OrgNetwork *string `json:"orgNetwork,omitempty" yaml:"orgNetwork,omitempty"`
    // VAppNetwork is a vApp Network.
    // If omitted, and no orgNetwork is provided - default vAppNetwork will be created
    // Optional
    VAppNetwork *VCDLocationVAPPNetworkSpec `json:"vAppNetwork,omitempty" yaml:"vAppNetwork,omitempty"`
}

type VCDLocationState

VCDLocationState represents state of VMware vCD Location.

type VCDLocationState struct {
    PrepareToCreateDeployment bool            `json:"prepareToCreateDeployment" yaml:"prepareToCreateDeployment" bson:"prepareToCreateDeployment"`
    TerraformState            *TerraformState `json:"terraformState,omitempty" yaml:"terraformState,omitempty" bson:"terraformState,omitempty"`
}

type VCDLocationVAPPNetworkSpec

VCDLocationVAPPNetworkSpec - holds network location location

type VCDLocationVAPPNetworkSpec struct {
    // ParentNetwork is an Org Network to connect the vApp network to.
    // Required
    ParentNetwork *string `json:"parentNetwork,omitempty" yaml:"parentNetwork,omitempty"`
    // CidrBlock is an IP address range for this vApp Network.
    // If omitted - default will be assigned.
    // Optional
    CidrBlock *string `json:"cidrBlock,omitempty" yaml:"cidrBlock,omitempty"`
    // Gateway is a gateway address of the vApp Network.
    // If omitted - default will be assigned.
    // Optional
    Gateway *string `json:"gateway,omitempty" yaml:"gateway,omitempty"`
    // Netmask is a netmask address of the vApp network.
    // If omitted - default will be assigned.
    // Optional
    Netmask *string `json:"network,omitempty" yaml:"network,omitempty"`
    // StaticIPRange is an IP range for static pool allocation in the network.
    // If omitted - default will be assigned.
    // Optional
    StaticIPRange *IPRangeSpec `json:"staticIpRange,omitempty" yaml:"staticIpRange,omitempty"`
    // DhcpIPRange is an IP range for DHCP server
    // If omitted - no DHCP server will be configured.
    // Optional
    DhcpIPRange *IPRangeSpec `json:"dhcpIpRange,omitempty" yaml:"dhcpIpRange,omitempty"`
    // DNSServers is a list of DNS servers for vApp Network. At least two DNS servers must be specified.
    // If omitted - 8.8.8.8, 8.8.4.4 will be used
    // Optional
    DNSServers []*string `json:"dnsServers,omitempty" yaml:"dnsServers,omitempty"`
}

type VCDSIPAddressAllocationMode

VCDSIPAddressAllocationMode - holds VMWare IP location mode

type VCDSIPAddressAllocationMode string

type VCDVAPPTemplateSpec

VCDVAPPTemplateSpec - template spec for VMware app.

type VCDVAPPTemplateSpec struct {
    // CatalogName is the catalog name in which to find the given vApp Template.
    // Required
    CatalogName *string `json:"catalogName,omitempty" yaml:"catalogName,omitempty"`
    // TemplateName is the name of the vApp Template to use.
    // Required
    TemplateName *string `json:"templateName,omitempty" yaml:"templateName,omitempty"`
}

type VCDVirtualMachineTemplate

VCDVirtualMachineTemplate - template for VMware virtual machines

type VCDVirtualMachineTemplate struct {
    // Template is a vApp template
    //Required
    Template *VCDVAPPTemplateSpec `json:"template,omitempty" yaml:"template,omitempty"`
    // Cpus is the number of virtual CPUs to allocate to the VM.
    // Required
    Cpus *int `json:"cpus,omitempty" yaml:"cpus,omitempty"`
    // MemoryMb is the amount of RAM (in MB) to allocate to the VM.
    // Required
    MemoryMb *int `json:"memoryMb,omitempty" yaml:"memoryMb,omitempty"`
    // StorageProfile is the storage profile name to be used for VMs storage.
    // If omitted - default VDC storage profile will be used
    // Optional
    StorageProfile *string `json:"storageProfile,omitempty" yaml:"storageProfile,omitempty"`
    // MasterDataDisk is a Master Data Disk.
    // If omitted - default will be created
    // Optional
    MasterDataDisk *VCDDataDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`
}

type VSphereAPISpec

VSphereAPISpec - VSphere Api Secret

type VSphereAPISpec struct {
    // URL is the URL for the vSphere API. e.g. https://server.domain.com/
    // Required
    URL string `json:"url" yaml:"url" bson:"url"`
    // Username for vSphere API operations.
    // Required
    Username string `json:"username" yaml:"username" bson:"username"`
    // Password for vSphere API operations.
    // Required
    Password string `json:"password" yaml:"password" bson:"password"`
    // Insecure can be set to true to disable SSL certificate verification. Default value is false
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
}

type VSphereDatastoreSecretStoreSpec

VSphereDatastoreSecretStoreSpec is a spec for secret store for VMWare vSphere installations.

type VSphereDatastoreSecretStoreSpec struct {
    // LocationRef is a reference to Location
    LocationRef string `json:"locationRef" yaml:"locationRef" bson:"locationRef"`
    // DatastoreName is a name of datastore if type is "datastore"
    DatastoreName *string `json:"datastoreName,omitempty" yaml:"datastoreName,omitempty" bson:"datastoreName,omitempty"`
    // DatastorePath is a datastore folder name
    DatastorePath *string `json:"datastorePath,omitempty" yaml:"datastorePath,omitempty" bson:"datastorePath,omitempty"`
}

type VSphereDiskSpec

VSphereDiskSpec represents VMWare vSphere disk specification

type VSphereDiskSpec struct {
    // SizeGb is a disk size (in Gb)
    // Optional
    SizeGb *int `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty" bson:"sizeGb,omitempty"`
    // DataStoreName is data store name in the vSphere
    // Optional
    DataStoreName *string `json:"dataStoreName,omitempty" yaml:"dataStoreName,omitempty" bson:"dataStoreName,omitempty"`
    // EagerlyScrub - If set to true, the disk space is zeroed out on VM creation.
    // This will delay the creation of the disk or virtual machine. Cannot be set to true when thin_provisioned is true.
    // See the section on picking a disk type.
    // Default: the value from vm template will be used
    EagerlyScrub *bool `json:"eagerlyScrub,omitempty" yaml:"eagerlyScrub,omitempty" bson:"eagerlyScrub,omitempty"`
    // ThinProvisioned - (Optional) If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
    // Cannot be set to true when eagerly_scrub is true. See the section on picking a disk type.
    // Default: the value from vm template will be used
    ThinProvisioned *bool `json:"thinProvisioned,omitempty" yaml:"thinProvisioned,omitempty" bson:"thinProvisioned,omitempty"`
    // IoLimit is the upper limit of IOPS that this disk can use. The default is no limit.
    // Optional
    IoLimit *int `json:"ioLimit,omitempty" yaml:"ioLimit,omitempty" bson:"ioLimit,omitempty"`
    // IoReservation is the I/O reservation (guarantee) that this disk has, in IOPS. The default is no reservation.
    // Optional
    IoReservation *int `json:"ioReservation,omitempty" yaml:"ioReservation,omitempty" bson:"ioReservation,omitempty"`
}

type VSphereInstanceGroupLocationSpec

VSphereInstanceGroupLocationSpec - spec for instance group location

type VSphereInstanceGroupLocationSpec struct {
    // InitType is the VM initialization type
    // Values can be 'vm-tools', 'cloud-init' and 'ovf-cloud-init'
    // Required
    InitType *string `json:"initType,omitempty" yaml:"initType,omitempty" bson:"initType"`
    // LoadBalancerAddress is a Load balancing address for K8S API Server.
    // Optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty" bson:"loadBalancerAddress,omitempty"`
    // IPAddressAllocationMode is an IP Address allocation mode (i.e. MANUAL, DHCP).
    // If ommitted - DHCP will be used.
    // Optional
    IPAddressAllocationMode *string `json:"ipAddressAllocationMode,omitempty" yaml:"ipAddressAllocationMode,omitempty" bson:"ipAddressAllocationMode,omitempty"`
    // IPAddresses  is a list of IP addresses for VM's in current group location.
    // Only mandatory for MANUAL ipAddressAllocationMode.
    // Optional
    IPAddresses []*string `json:"ipAddresses,omitempty" yaml:"ipAddresses,omitempty" bson:"ipAddresses,omitempty"`
    // The VM configuration
    // Required
    VM *VSphereVMInstanceSpec `json:"vm,omitempty" yaml:"vm,omitempty" bson:"vm,omitempty"`
    // ResourcePool is a name of the resource pool used by this instance group.
    // Optional
    ResourcePool *string `json:"resourcePool,omitempty" yaml:"resourcePool,omitempty" bson:"resourcePool,omitempty"`
    // DataStoreName is a name of the vSphere datastore
    // Optional
    DataStoreName *string `json:"dataStoreName,omitempty" yaml:"dataStoreName,omitempty" bson:"dataStoreName,omitempty"`
    // DataStoreType is type of data store.
    // If omitted, the default value of 'host' will be used. Values can be 'host' and 'cluster'
    // Optional
    DataStoreType *string `json:"dataStoreType,omitempty" yaml:"dataStoreType,omitempty" bson:"dataStoreType,omitempty"`
    // ClusterName is a name of the vSphere cluster. This field is necessary for the creation anti-affinity rules.
    // If this field is empty, anti-affinity rules will not be created.
    // Optional
    ClusterName *string `json:"clusterName,omitempty" yaml:"clusterName,omitempty" bson:"clusterName,omitempty"`
    // SSHPublicSecretRef is reference to the secret object containing public SSH key for instance group
    // Required if initType is “vm-tools”
    SSHPublicSecretRef *string `json:"sshPublicSecretRef,omitempty" yaml:"sshPublicSecretRef,omitempty" bson:"sshPublicSecretRef,omitempty"`
    // GuestCredentialsRef is reference to the secret object containing credentials of the guest VM.
    // Optional
    GuestCredentialsRef *string `json:"guestCredentialsRef,omitempty" yaml:"guestCredentialsRef,omitempty" bson:"guestCredentialsRef,omitempty"`
}

type VSphereInstanceTemplate

VSphereInstanceTemplate represents VMWare vSphere instance template

type VSphereInstanceTemplate struct {
    // Source is resource source where templates are stored
    // "datacenter" - templates are stored in the VSphere Data Center
    // "library" - templates are stored in the VSphere Content Library
    // Required
    Source *string `json:"source,omitempty" yaml:"source,omitempty" bson:"source"`
    // TemplateName is the VM template name
    // Required
    TemplateName *string `json:"templateName,omitempty" yaml:"templateName,omitempty" bson:"templateName"`
    // libraryName is the name of VSphere Content Library.
    // The field is required if source is "library"
    // Optional
    LibraryName *string `json:"libraryName,omitempty" yaml:"libraryName,omitempty" bson:"libraryName,omitempty"`
}

type VSphereLocationSpec

VSphereLocationSpec holds location specification for VMWare vSphere installations.

type VSphereLocationSpec struct {
    // VCDApiSecretRef is a reference to the secret object containing vSphere secrets to access
    // Required
    APISecretRef *string `json:"apiSecretRef,omitempty" yaml:"apiSecretRef,omitempty" bson:"apiSecretRef"`
    // Datacenter is the name of the resource pool. This can be a name or path
    // Required
    Datacenter *string `json:"datacenter,omitempty" yaml:"datacenter,omitempty" bson:"datacenter"`
    // NetworkName is a vSphere Network name
    // Required
    NetworkName *string `json:"networkName,omitempty" yaml:"networkName,omitempty" bson:"networkName"`
    // NetworkCidrBlock is an IP address range for this vSphere Network.
    // Optional
    NetworkCidrBlock *string `json:"networkCidrBlock,omitempty" yaml:"networkCidrBlock,omitempty" bson:"networkCidrBlock,omitempty"`
    // ResourcePool is a name of vSphere resource pool.
    // Optional
    ResourcePool *string `json:"resourcePool,omitempty" yaml:"resourcePool,omitempty" bson:"resourcePool,omitempty"`
    // DataStoreName is a name of the vSphere datastore
    // Optional
    DataStoreName *string `json:"dataStoreName,omitempty" yaml:"dataStoreName,omitempty" bson:"dataStoreName,omitempty"`
    // DataStoreType is type of data store.
    // If omitted, the default value of 'host' will be used. Values can be 'host' and 'cluster'
    // Optional
    DataStoreType *string `json:"dataStoreType,omitempty" yaml:"dataStoreType,omitempty" bson:"dataStoreType,omitempty"`
    // ClusterName is a name of the vSphere cluster. This field is necessary for the creation anti-affinity rules.
    // If this field is empty, anti-affinity rules will not be created.
    // Optional
    ClusterName *string `json:"clusterName,omitempty" yaml:"clusterName,omitempty" bson:"clusterName,omitempty"`
    // Netmask address of the vSphere network.
    // Optional
    Netmask *string `json:"netmask,omitempty" yaml:"netmask,omitempty" bson:"netmask,omitempty"`
    // NetworkGateway is Gateway address of the vSphere Network.
    // Optional
    NetworkGateway *string `json:"networkGateway,omitempty" yaml:"networkGateway,omitempty" bson:"networkGateway,omitempty"`
    // DNSServers is list of DNS servers for vSphere Network.
    // Optional
    DNSServers []*string `json:"dnsServers,omitempty" yaml:"dnsServers,omitempty" bson:"dnsServers,omitempty"`
}

type VSphereLocationState

VSphereLocationState represents state of VMWare vSphere Location.

type VSphereLocationState struct {
    PrepareToCreateDeployment bool            `json:"prepareToCreateDeployment" yaml:"prepareToCreateDeployment" bson:"prepareToCreateDeployment"`
    TerraformState            *TerraformState `json:"terraformState,omitempty" yaml:"terraformState,omitempty" bson:"terraformState,omitempty"`
}

type VSphereVMInstanceSpec

VSphereVMInstanceSpec represents VMWare vSphere instance spec

type VSphereVMInstanceSpec struct {
    // Template is vCenter VM Template
    // Required
    Template *VSphereInstanceTemplate `json:"template,omitempty" yaml:"template,omitempty" bson:"template,omitempty"`
    // Cpus is the number of virtual CPUs to allocate to the VM.
    // Required
    Cpus *int `json:"cpus,omitempty" yaml:"cpus,omitempty" bson:"cpus,omitempty"`
    // MemoryMb is the amount of RAM (in MB) to allocate to the VM.
    // Required
    MemoryMb *int `json:"memoryMb,omitempty" yaml:"memoryMb,omitempty" bson:"memoryMb,omitempty"`
    // bootDisk is a Boot Data Disk.
    // If omitted - values from VM Template will be used.
    // Optional
    BootDisk *VSphereDiskSpec `json:"bootDisk,omitempty" yaml:"bootDisk,omitempty" bson:"bootDisk,omitempty"`
    // MasterDataDisk is a Master Data Disk.
    // If omitted - default will be created
    // Optional
    MasterDataDisk *VSphereDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty" bson:"masterDataDisk,omitempty"`
    // NICName is a Network Interface (NIC) Name.
    // Used only for cloud-init network initialization.
    // If omitted - 'ens192' will be used by default.
    // Optional
    NICName *string `json:"nicName,omitempty" yaml:"nicName,omitempty" bson:"nicName,omitempty"`
}

type Victims

Victims contains all nodes planned to delete during Update Location

type Victims map[ResourceID]*NodeToDelete

type VolumeSnapshot

VolumeSnapshot - model for volume snapshot

type VolumeSnapshot struct {
    CreatedAt time.Time `json:"createdAt" yaml:"createdAt" bson:"createdAt"`
    // Size is the size of the volume snapshot, in GiB.
    Size          int64              `json:"size" yaml:"size" bson:"size"`
    Tags          []SnapshotTag      `json:"tags" yaml:"tags" bson:"tags"`
    Aws           *AwsVolumeSnapshot `json:"aws" yaml:"aws" bson:"aws"`
    LocationRef   *string            `json:"locationRef" yaml:"locationRef" bson:"locationRef"`
    Status        SnapshotStatus     `json:"status" yaml:"status" bson:"status"`
    LastCheckTime time.Time          `json:"lastCheckTime" yaml:"lastCheckTime" bson:"lastCheckTime"`
    // PVSpec stores persistence volume object
    PVSpec string `json:"pvspec" yaml:"pvspec" bson:"pvspec"`
    // PVCSpec stores persistence volume claim object
    PVCSpec string `json:"pvcspec" yaml:"pvcspec" bson:"pvcspec"`
}