moc-sdk-for-go/services/cloud/cloud.go

330 строки
11 KiB
Go

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the Apache v2.0 License.
package cloud
import (
"github.com/Azure/go-autorest/autorest"
)
// LocationProperties the resource group properties.
type LocationProperties struct {
// State - State
Statuses map[string]*string `json:"statuses"`
}
// Location resource group information.
type Location struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
// Properties
*LocationProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
}
// GroupProperties the resource group properties.
type GroupProperties struct {
// State - State
Statuses map[string]*string `json:"statuses"`
}
// Group resource group information.
type Group struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
// Properties
*GroupProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations.
Location *string `json:"location,omitempty"`
// ManagedBy - The ID of the resource that manages this resource group.
ManagedBy *string `json:"managedBy,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
}
// NodeProperties the resource group properties.
type NodeProperties struct {
// State - State
Statuses map[string]*string `json:"statuses"`
// FQDN
FQDN *string `json:"fqdn,omitempty"`
Port *int32 `json:"port,omitempty"`
AuthorizerPort *int32 `json:"authorizerPort,omitempty"`
Certificate *string `json:"certificate,omitempty"`
}
// Node resource group information.
type Node struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
//Properties
*NodeProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations.
Location *string `json:"location,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
}
type ClusterConfiguration struct {
// Version
Version *string `json:"version,omitempty"`
}
type ManagementStrategyType string
const (
Pivoted ManagementStrategyType = "Pivoted"
Distinct ManagementStrategyType = "Distinct"
)
type NetworkConfiguration struct {
// CNI
CNI *string `json:"cni,omitempty"`
// PodCIDR
PodCIDR *string `json:"pidCidr,omitempty"`
// ClusterCIDR
ClusterCIDR *string `json:"clusterCidr,omitempty"`
// ControlPlaneCIDR
ControlPlaneCIDR *string `json:"controlPlaneCidr,omitempty"`
// VirtualNetwork
VirtualNetwork *string `json:"virtualNetwork,omitempty"`
// LoadBalancerVip
LoadBalancerVip *string `json:"loadBalancerVip,omitempty"`
// LoadBalancerMac
LoadBalancerMac *string `json:"loadBalancerMac,omitempty"`
}
type NodeType string
const (
ControlPlane NodeType = "ControlPlane"
LinuxWorker NodeType = "LinuxWorker"
WindowsWorker NodeType = "WindowsWorker"
LoadBalancer NodeType = "LoadBalancer"
)
type NodePoolConfiguration struct {
// NodeType
NodeType NodeType `json:"nodeType,omitempty"`
// Replicas
Replicas *int32 `json:"replicas,omitempty"`
// ImageReference
ImageReference *string `json:"imageReference,omitempty"`
// VMSize
VMSize *string `json:"vmSize,omitempty"`
}
type SSHPublicKey struct {
// KeyData - SSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format.
KeyData *string `json:"keyData,omitempty"`
}
type SSHConfiguration struct {
// PublicKeys - The SSH public key used to authenticate with linux based VMs.
PublicKey *SSHPublicKey `json:"publicKey,omitempty"`
}
type ComputeConfiguration struct {
// CRI
CRI *string `json:"cri,omitempty"`
// SSH
SSH *SSHConfiguration `json:"ssh,omitempty"`
// NodePools
NodePools *[]NodePoolConfiguration `json:"nodePools,omitempty"`
}
type StorageConfiguration struct {
// Version
CSI *string `json:"csi,omitempty"`
}
// ClusterAPIConfiguration is the configuration needed for setting up Cluster API
type ClusterAPIConfiguration struct {
// ConfigurationEndpoint
ConfigurationEndpoint *string `json:"configurationEndpoint,omitempty"`
// InfrastructureProviderVersion
InfrastructureProviderVersion *string `json:"infrastructureProviderVersion,omitempty"`
// BootstrapProviderVersion
BootstrapProviderVersion *string `json:"bootstrapProviderVersion,omitempty"`
// ControlPlaneProviderVersion
ControlPlaneProviderVersion *string `json:"controlPlaneProviderVersion,omitempty"`
// CoreProviderVersion
CoreProviderVersion *string `json:"coreProviderVersion,omitempty"`
}
// ContainerRegistryConfiguration is the configuration needed for a container registry
type ContainerRegistryConfiguration struct {
// Name
Name *string `json:"name,omitempty"`
// Username
Username *string `json:"username,omitempty"`
// Password
Password *string `json:"password,omitempty"`
}
// KubernetesProperties the resource group properties.
type KubernetesProperties struct {
// Cluster
Cluster *ClusterConfiguration `json:"cluster,omitempty"`
// Network
Network *NetworkConfiguration `json:"network,omitempty"`
// Storage
Storage *StorageConfiguration `json:"storage,omitempty"`
// Compute
Compute *ComputeConfiguration `json:"compute,omitempty"`
// ClusterAPI
ClusterAPI *ClusterAPIConfiguration `json:"clusterapi,omitempty"`
// ContainerRegistry
ContainerRegistry *ContainerRegistryConfiguration `json:"containerregistry,omitempty"`
// ManagementStrategy
ManagementStrategy ManagementStrategyType `json:"managementstrategy,omitempty"`
// KubeConfig
KubeConfig []byte `json:"kubeconfig,omitempty"`
// DeploymentManifest
DeploymentManifest []byte `json:"deploymentManifest,omitempty"`
// State - State
Statuses map[string]*string `json:"statuses"`
}
// Kubernetes resource group information.
type Kubernetes struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
//Properties
*KubernetesProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations.
Location *string `json:"location,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
}
// ClusterProperties the resource group properties.
type ClusterProperties struct {
// State - State
Statuses map[string]*string `json:"statuses"`
// FQDN
FQDN *string `json:"fqdn,omitempty"`
}
// Cluster resource group information.
type Cluster struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
//Properties
*ClusterProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations.
Location *string `json:"location,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
// Nodes
Nodes *[]Node `json:"nodes,omitempty"`
}
// ControlPlaneProperties the resource group properties.
type ControlPlaneProperties struct {
// Statuses - provides state of the ControlPlane like denoting whether
// each ControlPlane is the Leader or Active
Statuses map[string]*string `json:"statuses"`
// FQDN - provides the ControlPlane FQDN (or IP) used for the leadership
// election.
FQDN *string `json:"fqdn,omitempty"`
// Port - provides the ControlPlane Port (or IP) used for the leadership
// election.
Port *int32 `json:"port,omitempty"`
}
// ControlPlane resource group information.
type ControlPlaneInfo struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
// Properties
*ControlPlaneProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations.
Location *string `json:"location,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
}
// EtcdClusterProperties the resource group properties.
type EtcdClusterProperties struct {
// CaCertificate used as root certificate for communication among ETCD nodes
// and to the ETCD cluster
CaCertificate *string `json:"cacertificate,omitempty"`
// CaKey is the private key corresponding to the CaCertificate
CaKey *string `json:"cakey,omitempty"`
// State - State
Statuses map[string]*string `json:"statuses"`
}
// EtcdCluster resource group information.
type EtcdCluster struct {
autorest.Response `json:"-"`
// ID - READ-ONLY; The ID of the resource group.
ID *string `json:"id,omitempty"`
// Name - The name of the resource group.
Name *string `json:"name,omitempty"`
// Properties
*EtcdClusterProperties `json:"properties,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - The location of the resource group. It cannot be changed after the resource group has been created. It must be one of the supported Azure locations.
Location *string `json:"location,omitempty"`
// Tags - The tags attached to the resource group.
Tags map[string]*string `json:"tags"`
}
// Zone describes the Zone setting for a virtual machine
type Zone struct {
// ID
ID *string `json:"ID,omitempty"`
// Name
Name *string `json:"name,omitempty"`
// Version
Version *string `json:"version,omitempty"`
// Location - Resource location
Location *string `json:"location,omitempty"`
*ZoneProperties `json:"properties,omitempty"`
}
type ZoneProperties struct {
// Statuses - Statuses
Statuses map[string]*string `json:"statuses"`
// Nodes
Nodes *[]string `json:"nodes,omitempty"`
}