mirror of https://github.com/kubernetes/kops.git
Use switch/case statement
This commit is contained in:
parent
af86a55c81
commit
701f01a26b
|
@ -181,7 +181,8 @@ func (m *MockClient) routerInterface(w http.ResponseWriter, r *http.Request) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic("error decoding create router interface request")
|
panic("error decoding create router interface request")
|
||||||
}
|
}
|
||||||
if parts[2] == "add_router_interface" {
|
switch parts[2] {
|
||||||
|
case "add_router_interface":
|
||||||
subnet := m.subnets[createInterface.SubnetID]
|
subnet := m.subnets[createInterface.SubnetID]
|
||||||
interfaces := m.routerInterfaces[routerID]
|
interfaces := m.routerInterfaces[routerID]
|
||||||
interfaces = append(interfaces, routers.InterfaceInfo{
|
interfaces = append(interfaces, routers.InterfaceInfo{
|
||||||
|
@ -201,7 +202,7 @@ func (m *MockClient) routerInterface(w http.ResponseWriter, r *http.Request) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
m.ports[port.ID] = port
|
m.ports[port.ID] = port
|
||||||
} else if parts[2] == "remove_router_interface" {
|
case "remove_router_interface":
|
||||||
interfaces := make([]routers.InterfaceInfo, 0)
|
interfaces := make([]routers.InterfaceInfo, 0)
|
||||||
for _, i := range m.routerInterfaces[routerID] {
|
for _, i := range m.routerInterfaces[routerID] {
|
||||||
if i.SubnetID != createInterface.SubnetID {
|
if i.SubnetID != createInterface.SubnetID {
|
||||||
|
@ -209,7 +210,7 @@ func (m *MockClient) routerInterface(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m.routerInterfaces[routerID] = interfaces
|
m.routerInterfaces[routerID] = interfaces
|
||||||
} else {
|
default:
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -1633,7 +1633,8 @@ func (i *integrationTest) runTestPhase(t *testing.T, phase cloudup.Phase) {
|
||||||
|
|
||||||
expectedFilenames := i.expectTerraformFilenames
|
expectedFilenames := i.expectTerraformFilenames
|
||||||
|
|
||||||
if phase == cloudup.PhaseSecurity {
|
switch phase {
|
||||||
|
case cloudup.PhaseSecurity:
|
||||||
expectedFilenames = []string{
|
expectedFilenames = []string{
|
||||||
"aws_iam_role_masters." + i.clusterName + "_policy",
|
"aws_iam_role_masters." + i.clusterName + "_policy",
|
||||||
"aws_iam_role_nodes." + i.clusterName + "_policy",
|
"aws_iam_role_nodes." + i.clusterName + "_policy",
|
||||||
|
@ -1648,7 +1649,7 @@ func (i *integrationTest) runTestPhase(t *testing.T, phase cloudup.Phase) {
|
||||||
"aws_launch_template_bastion." + i.clusterName + "_user_data",
|
"aws_launch_template_bastion." + i.clusterName + "_user_data",
|
||||||
}...)
|
}...)
|
||||||
}
|
}
|
||||||
} else if phase == cloudup.PhaseCluster {
|
case cloudup.PhaseCluster:
|
||||||
expectedFilenames = []string{
|
expectedFilenames = []string{
|
||||||
"aws_launch_template_nodes." + i.clusterName + "_user_data",
|
"aws_launch_template_nodes." + i.clusterName + "_user_data",
|
||||||
}
|
}
|
||||||
|
|
|
@ -520,7 +520,8 @@ func decorateWithMixedInstancesPolicy(instanceGroup *kops.InstanceGroup, usageCl
|
||||||
ig := instanceGroup
|
ig := instanceGroup
|
||||||
ig.Spec.MachineType = instanceSelections[0]
|
ig.Spec.MachineType = instanceSelections[0]
|
||||||
|
|
||||||
if usageClass == ec2types.UsageClassTypeSpot {
|
switch usageClass {
|
||||||
|
case ec2types.UsageClassTypeSpot:
|
||||||
ondemandBase := int64(0)
|
ondemandBase := int64(0)
|
||||||
ondemandAboveBase := int64(0)
|
ondemandAboveBase := int64(0)
|
||||||
spotAllocationStrategy := "capacity-optimized"
|
spotAllocationStrategy := "capacity-optimized"
|
||||||
|
@ -530,11 +531,11 @@ func decorateWithMixedInstancesPolicy(instanceGroup *kops.InstanceGroup, usageCl
|
||||||
OnDemandAboveBase: &ondemandAboveBase,
|
OnDemandAboveBase: &ondemandAboveBase,
|
||||||
SpotAllocationStrategy: &spotAllocationStrategy,
|
SpotAllocationStrategy: &spotAllocationStrategy,
|
||||||
}
|
}
|
||||||
} else if usageClass == ec2types.UsageClassTypeOnDemand {
|
case ec2types.UsageClassTypeOnDemand:
|
||||||
ig.Spec.MixedInstancesPolicy = &kops.MixedInstancesPolicySpec{
|
ig.Spec.MixedInstancesPolicy = &kops.MixedInstancesPolicySpec{
|
||||||
Instances: instanceSelections,
|
Instances: instanceSelections,
|
||||||
}
|
}
|
||||||
} else {
|
default:
|
||||||
return nil, fmt.Errorf("error node usage class not supported")
|
return nil, fmt.Errorf("error node usage class not supported")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -201,9 +201,10 @@ func (c *NodeController) updateNodeRecords(node *v1.Node) string {
|
||||||
|
|
||||||
for _, a := range node.Status.Addresses {
|
for _, a := range node.Status.Addresses {
|
||||||
var roleType string
|
var roleType string
|
||||||
if a.Type == v1.NodeInternalIP {
|
switch a.Type {
|
||||||
|
case v1.NodeInternalIP:
|
||||||
roleType = dns.RoleTypeInternal
|
roleType = dns.RoleTypeInternal
|
||||||
} else if a.Type == v1.NodeExternalIP {
|
case v1.NodeExternalIP:
|
||||||
roleType = dns.RoleTypeExternal
|
roleType = dns.RoleTypeExternal
|
||||||
}
|
}
|
||||||
var recordType dns.RecordType = dns.RecordTypeA
|
var recordType dns.RecordType = dns.RecordTypeA
|
||||||
|
|
|
@ -152,7 +152,8 @@ func (c *ServiceController) updateServiceRecords(service *v1.Service) string {
|
||||||
if len(specExternal) != 0 || len(specInternal) != 0 {
|
if len(specExternal) != 0 || len(specInternal) != 0 {
|
||||||
var ingresses []dns.Record
|
var ingresses []dns.Record
|
||||||
|
|
||||||
if service.Spec.Type == v1.ServiceTypeLoadBalancer {
|
switch service.Spec.Type {
|
||||||
|
case v1.ServiceTypeLoadBalancer:
|
||||||
for i := range service.Status.LoadBalancer.Ingress {
|
for i := range service.Status.LoadBalancer.Ingress {
|
||||||
ingress := &service.Status.LoadBalancer.Ingress[i]
|
ingress := &service.Status.LoadBalancer.Ingress[i]
|
||||||
if ingress.Hostname != "" {
|
if ingress.Hostname != "" {
|
||||||
|
@ -175,7 +176,7 @@ func (c *ServiceController) updateServiceRecords(service *v1.Service) string {
|
||||||
klog.V(4).Infof("Found A record for service %s/%s: %q", service.Namespace, service.Name, ingress.IP)
|
klog.V(4).Infof("Found A record for service %s/%s: %q", service.Namespace, service.Name, ingress.IP)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if service.Spec.Type == v1.ServiceTypeNodePort {
|
case v1.ServiceTypeNodePort:
|
||||||
var roleType string
|
var roleType string
|
||||||
if len(specExternal) != 0 && len(specInternal) != 0 {
|
if len(specExternal) != 0 && len(specInternal) != 0 {
|
||||||
klog.Warningln("DNS Records not possible for both Internal and Externals IPs.")
|
klog.Warningln("DNS Records not possible for both Internal and Externals IPs.")
|
||||||
|
@ -190,7 +191,7 @@ func (c *ServiceController) updateServiceRecords(service *v1.Service) string {
|
||||||
Value: dns.AliasForNodesInRole("node", roleType),
|
Value: dns.AliasForNodesInRole("node", roleType),
|
||||||
})
|
})
|
||||||
klog.V(4).Infof("Setting internal alias for NodePort service %s/%s", service.Namespace, service.Name)
|
klog.V(4).Infof("Setting internal alias for NodePort service %s/%s", service.Namespace, service.Name)
|
||||||
} else {
|
default:
|
||||||
// TODO: Emit event so that users are informed of this
|
// TODO: Emit event so that users are informed of this
|
||||||
klog.V(2).Infof("Cannot expose service %s/%s of type %q", service.Namespace, service.Name, service.Spec.Type)
|
klog.V(2).Infof("Cannot expose service %s/%s of type %q", service.Namespace, service.Name, service.Spec.Type)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1629,13 +1629,14 @@ func validateCalicoAutoDetectionMethod(fldPath *field.Path, runtime string, vers
|
||||||
case "can-reach":
|
case "can-reach":
|
||||||
destStr := method[1]
|
destStr := method[1]
|
||||||
ip := netutils.ParseIPSloppy(destStr)
|
ip := netutils.ParseIPSloppy(destStr)
|
||||||
if version == ipv4.Version {
|
switch version {
|
||||||
|
case ipv4.Version:
|
||||||
if ip == nil || ip.To4() == nil {
|
if ip == nil || ip.To4() == nil {
|
||||||
return field.ErrorList{field.Invalid(fldPath, runtime, "must be a valid IPv4 address")}
|
return field.ErrorList{field.Invalid(fldPath, runtime, "must be a valid IPv4 address")}
|
||||||
} else {
|
} else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else if version == ipv6.Version {
|
case ipv6.Version:
|
||||||
if ip == nil || ip.To4() != nil {
|
if ip == nil || ip.To4() != nil {
|
||||||
return field.ErrorList{field.Invalid(fldPath, runtime, "must be a valid IPv6 address")}
|
return field.ErrorList{field.Invalid(fldPath, runtime, "must be a valid IPv6 address")}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -62,9 +62,10 @@ func (req *putResource) Run(s *MockKubeAPIServer) error {
|
||||||
|
|
||||||
var updated *unstructured.Unstructured
|
var updated *unstructured.Unstructured
|
||||||
|
|
||||||
if req.SubResource == "" {
|
switch req.SubResource {
|
||||||
|
case "":
|
||||||
updated = body
|
updated = body
|
||||||
} else if req.SubResource == "status" {
|
case "status":
|
||||||
updated = existing.DeepCopyObject().(*unstructured.Unstructured)
|
updated = existing.DeepCopyObject().(*unstructured.Unstructured)
|
||||||
newStatus := body.Object["status"]
|
newStatus := body.Object["status"]
|
||||||
if newStatus == nil {
|
if newStatus == nil {
|
||||||
|
@ -72,7 +73,7 @@ func (req *putResource) Run(s *MockKubeAPIServer) error {
|
||||||
return fmt.Errorf("status not specified on status subresource update")
|
return fmt.Errorf("status not specified on status subresource update")
|
||||||
}
|
}
|
||||||
updated.Object["status"] = newStatus
|
updated.Object["status"] = newStatus
|
||||||
} else {
|
default:
|
||||||
// TODO: We need to implement put properly
|
// TODO: We need to implement put properly
|
||||||
return fmt.Errorf("unknown subresource %q", req.SubResource)
|
return fmt.Errorf("unknown subresource %q", req.SubResource)
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,11 +311,12 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.CloudupMode
|
||||||
lt.HTTPTokens = fi.PtrTo(ec2types.LaunchTemplateHttpTokensStateOptional)
|
lt.HTTPTokens = fi.PtrTo(ec2types.LaunchTemplateHttpTokensStateOptional)
|
||||||
}
|
}
|
||||||
|
|
||||||
if rootVolumeType == ec2types.VolumeTypeIo1 || rootVolumeType == ec2types.VolumeTypeIo2 {
|
switch rootVolumeType {
|
||||||
|
case ec2types.VolumeTypeIo1, ec2types.VolumeTypeIo2:
|
||||||
if ig.Spec.RootVolume == nil || fi.ValueOf(ig.Spec.RootVolume.IOPS) < 100 {
|
if ig.Spec.RootVolume == nil || fi.ValueOf(ig.Spec.RootVolume.IOPS) < 100 {
|
||||||
lt.RootVolumeIops = fi.PtrTo(int32(DefaultVolumeIonIops))
|
lt.RootVolumeIops = fi.PtrTo(int32(DefaultVolumeIonIops))
|
||||||
}
|
}
|
||||||
} else if rootVolumeType == ec2types.VolumeTypeGp3 {
|
case ec2types.VolumeTypeGp3:
|
||||||
if ig.Spec.RootVolume == nil || fi.ValueOf(ig.Spec.RootVolume.IOPS) < 3000 {
|
if ig.Spec.RootVolume == nil || fi.ValueOf(ig.Spec.RootVolume.IOPS) < 3000 {
|
||||||
lt.RootVolumeIops = fi.PtrTo(int32(DefaultVolumeGp3Iops))
|
lt.RootVolumeIops = fi.PtrTo(int32(DefaultVolumeGp3Iops))
|
||||||
}
|
}
|
||||||
|
@ -324,7 +325,7 @@ func (b *AutoscalingGroupModelBuilder) buildLaunchTemplateTask(c *fi.CloudupMode
|
||||||
} else {
|
} else {
|
||||||
lt.RootVolumeThroughput = fi.PtrTo(int32(fi.ValueOf(ig.Spec.RootVolume.Throughput)))
|
lt.RootVolumeThroughput = fi.PtrTo(int32(fi.ValueOf(ig.Spec.RootVolume.Throughput)))
|
||||||
}
|
}
|
||||||
} else {
|
default:
|
||||||
lt.RootVolumeIops = nil
|
lt.RootVolumeIops = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -729,11 +729,12 @@ func (b *FirewallModelBuilder) Build(c *fi.CloudupModelBuilderContext) error {
|
||||||
Lifecycle: b.Lifecycle,
|
Lifecycle: b.Lifecycle,
|
||||||
RemoveGroup: false,
|
RemoveGroup: false,
|
||||||
}
|
}
|
||||||
if role == kops.InstanceGroupRoleBastion {
|
switch role {
|
||||||
|
case kops.InstanceGroupRoleBastion:
|
||||||
sg.RemoveExtraRules = []string{"port=22"}
|
sg.RemoveExtraRules = []string{"port=22"}
|
||||||
} else if role == kops.InstanceGroupRoleNode {
|
case kops.InstanceGroupRoleNode:
|
||||||
sg.RemoveExtraRules = []string{"port=22", "port=10250"}
|
sg.RemoveExtraRules = []string{"port=22", "port=10250"}
|
||||||
} else if role == kops.InstanceGroupRoleControlPlane {
|
case kops.InstanceGroupRoleControlPlane:
|
||||||
sg.RemoveExtraRules = []string{"port=22", "port=443", "port=10250"}
|
sg.RemoveExtraRules = []string{"port=22", "port=443", "port=10250"}
|
||||||
}
|
}
|
||||||
c.AddTask(sg)
|
c.AddTask(sg)
|
||||||
|
|
|
@ -190,20 +190,21 @@ func parsePEMPrivateKey(pemData []byte) (crypto.Signer, error) {
|
||||||
return nil, fmt.Errorf("could not parse private key (unable to decode PEM)")
|
return nil, fmt.Errorf("could not parse private key (unable to decode PEM)")
|
||||||
}
|
}
|
||||||
|
|
||||||
if block.Type == "RSA PRIVATE KEY" {
|
switch block.Type {
|
||||||
|
case "RSA PRIVATE KEY":
|
||||||
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
||||||
return x509.ParsePKCS1PrivateKey(block.Bytes)
|
return x509.ParsePKCS1PrivateKey(block.Bytes)
|
||||||
} else if block.Type == "EC PRIVATE KEY" {
|
case "EC PRIVATE KEY":
|
||||||
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
||||||
return x509.ParseECPrivateKey(block.Bytes)
|
return x509.ParseECPrivateKey(block.Bytes)
|
||||||
} else if block.Type == "PRIVATE KEY" {
|
case "PRIVATE KEY":
|
||||||
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
klog.V(10).Infof("Parsing pem block: %q", block.Type)
|
||||||
k, err := x509.ParsePKCS8PrivateKey(block.Bytes)
|
k, err := x509.ParsePKCS8PrivateKey(block.Bytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return k.(crypto.Signer), nil
|
return k.(crypto.Signer), nil
|
||||||
} else {
|
default:
|
||||||
klog.Infof("Ignoring unexpected PEM block: %q", block.Type)
|
klog.Infof("Ignoring unexpected PEM block: %q", block.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,19 +47,20 @@ func parsePEMPublicKey(pemData []byte) (crypto.PublicKey, error) {
|
||||||
return nil, fmt.Errorf("could not parse private key")
|
return nil, fmt.Errorf("could not parse private key")
|
||||||
}
|
}
|
||||||
|
|
||||||
if block.Type == "RSA PUBLIC KEY" {
|
switch block.Type {
|
||||||
|
case "RSA PUBLIC KEY":
|
||||||
k, err := x509.ParsePKCS1PublicKey(block.Bytes)
|
k, err := x509.ParsePKCS1PublicKey(block.Bytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return k, nil
|
return k, nil
|
||||||
} else if block.Type == "PUBLIC KEY" {
|
case "PUBLIC KEY":
|
||||||
k, err := x509.ParsePKIXPublicKey(block.Bytes)
|
k, err := x509.ParsePKIXPublicKey(block.Bytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return k.(crypto.PublicKey), nil
|
return k.(crypto.PublicKey), nil
|
||||||
} else {
|
default:
|
||||||
klog.Infof("Ignoring unexpected PEM block: %q", block.Type)
|
klog.Infof("Ignoring unexpected PEM block: %q", block.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2184,13 +2184,14 @@ func findDNSName(cloud AWSCloud, cluster *kops.Cluster) (string, error) {
|
||||||
if cluster.Spec.API.LoadBalancer == nil {
|
if cluster.Spec.API.LoadBalancer == nil {
|
||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
if cluster.Spec.API.LoadBalancer.Class == kops.LoadBalancerClassClassic {
|
switch cluster.Spec.API.LoadBalancer.Class {
|
||||||
|
case kops.LoadBalancerClassClassic:
|
||||||
if lb, err := cloud.FindELBByNameTag(name); err != nil {
|
if lb, err := cloud.FindELBByNameTag(name); err != nil {
|
||||||
return "", fmt.Errorf("error looking for AWS ELB: %v", err)
|
return "", fmt.Errorf("error looking for AWS ELB: %v", err)
|
||||||
} else if lb != nil {
|
} else if lb != nil {
|
||||||
return aws.ToString(lb.DNSName), nil
|
return aws.ToString(lb.DNSName), nil
|
||||||
}
|
}
|
||||||
} else if cluster.Spec.API.LoadBalancer.Class == kops.LoadBalancerClassNetwork {
|
case kops.LoadBalancerClassNetwork:
|
||||||
allLoadBalancers, err := ListELBV2LoadBalancers(ctx, cloud)
|
allLoadBalancers, err := ListELBV2LoadBalancers(ctx, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("looking for AWS NLB: %w", err)
|
return "", fmt.Errorf("looking for AWS NLB: %w", err)
|
||||||
|
|
|
@ -195,7 +195,8 @@ func updateSecondaryRanges(cloud gce.GCECloud, op string, e *Subnet) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cannot add and remove ranges in the same call
|
// Cannot add and remove ranges in the same call
|
||||||
if op == "add" {
|
switch op {
|
||||||
|
case "add":
|
||||||
patch := false
|
patch := false
|
||||||
for k, v := range expectedRanges {
|
for k, v := range expectedRanges {
|
||||||
if actualRanges[k] != v {
|
if actualRanges[k] != v {
|
||||||
|
@ -211,7 +212,7 @@ func updateSecondaryRanges(cloud gce.GCECloud, op string, e *Subnet) error {
|
||||||
if !patch {
|
if !patch {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else if op == "remove" {
|
case "remove":
|
||||||
patch := false
|
patch := false
|
||||||
if len(actualRanges) != len(expectedRanges) {
|
if len(actualRanges) != len(expectedRanges) {
|
||||||
patch = true
|
patch = true
|
||||||
|
|
|
@ -72,11 +72,12 @@ func waitLoadbalancerActiveProvisioningStatus(client *gophercloud.ServiceClient,
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
provisioningStatus = loadbalancer.ProvisioningStatus
|
provisioningStatus = loadbalancer.ProvisioningStatus
|
||||||
if loadbalancer.ProvisioningStatus == activeStatus {
|
switch loadbalancer.ProvisioningStatus {
|
||||||
|
case activeStatus:
|
||||||
return true, nil
|
return true, nil
|
||||||
} else if loadbalancer.ProvisioningStatus == errorStatus {
|
case errorStatus:
|
||||||
return true, fmt.Errorf("loadbalancer has gone into ERROR state")
|
return true, fmt.Errorf("loadbalancer has gone into ERROR state")
|
||||||
} else {
|
default:
|
||||||
klog.Infof("Waiting for Loadbalancer to be ACTIVE...")
|
klog.Infof("Waiting for Loadbalancer to be ACTIVE...")
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,7 +241,8 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if bootConfig.CloudProvider == api.CloudProviderAWS {
|
switch bootConfig.CloudProvider {
|
||||||
|
case api.CloudProviderAWS:
|
||||||
instanceIDBytes, err := vfs.Context.ReadFile("metadata://aws/meta-data/instance-id")
|
instanceIDBytes, err := vfs.Context.ReadFile("metadata://aws/meta-data/instance-id")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error reading instance-id from AWS metadata: %v", err)
|
return fmt.Errorf("error reading instance-id from AWS metadata: %v", err)
|
||||||
|
@ -276,7 +277,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
modelContext.GPUVendor = architectures.GPUVendorNvidia
|
modelContext.GPUVendor = architectures.GPUVendorNvidia
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if bootConfig.CloudProvider == api.CloudProviderOpenstack {
|
case api.CloudProviderOpenstack:
|
||||||
// NvidiaGPU possible to enable only in instance group level in OpenStack. When we assume that GPU is supported
|
// NvidiaGPU possible to enable only in instance group level in OpenStack. When we assume that GPU is supported
|
||||||
if nodeupConfig.NvidiaGPU != nil && fi.ValueOf(nodeupConfig.NvidiaGPU.Enabled) {
|
if nodeupConfig.NvidiaGPU != nil && fi.ValueOf(nodeupConfig.NvidiaGPU.Enabled) {
|
||||||
klog.Info("instance supports GPU acceleration")
|
klog.Info("instance supports GPU acceleration")
|
||||||
|
|
|
@ -243,7 +243,8 @@ func (_ *File) RenderLocal(_ *local.LocalTarget, a, e, changes *File) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
changed := false
|
changed := false
|
||||||
if e.Type == FileType_Symlink {
|
switch e.Type {
|
||||||
|
case FileType_Symlink:
|
||||||
if changes.Symlink != nil {
|
if changes.Symlink != nil {
|
||||||
// This will currently fail if the target already exists.
|
// This will currently fail if the target already exists.
|
||||||
// That's probably a good thing for now ... it is hard to know what to do here!
|
// That's probably a good thing for now ... it is hard to know what to do here!
|
||||||
|
@ -254,7 +255,7 @@ func (_ *File) RenderLocal(_ *local.LocalTarget, a, e, changes *File) error {
|
||||||
}
|
}
|
||||||
changed = true
|
changed = true
|
||||||
}
|
}
|
||||||
} else if e.Type == FileType_Directory {
|
case FileType_Directory:
|
||||||
if a == nil {
|
if a == nil {
|
||||||
parent := filepath.Dir(strings.TrimSuffix(e.Path, "/"))
|
parent := filepath.Dir(strings.TrimSuffix(e.Path, "/"))
|
||||||
err := os.MkdirAll(parent, dirMode)
|
err := os.MkdirAll(parent, dirMode)
|
||||||
|
@ -268,7 +269,7 @@ func (_ *File) RenderLocal(_ *local.LocalTarget, a, e, changes *File) error {
|
||||||
}
|
}
|
||||||
changed = true
|
changed = true
|
||||||
}
|
}
|
||||||
} else if e.Type == FileType_File {
|
case FileType_File:
|
||||||
if changes.Contents != nil {
|
if changes.Contents != nil {
|
||||||
err = fi.WriteFile(e.Path, e.Contents, fileMode, dirMode, fi.ValueOf(e.Owner), fi.ValueOf(e.Group))
|
err = fi.WriteFile(e.Path, e.Contents, fileMode, dirMode, fi.ValueOf(e.Owner), fi.ValueOf(e.Group))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -276,7 +277,7 @@ func (_ *File) RenderLocal(_ *local.LocalTarget, a, e, changes *File) error {
|
||||||
}
|
}
|
||||||
changed = true
|
changed = true
|
||||||
}
|
}
|
||||||
} else {
|
default:
|
||||||
return fmt.Errorf("File type=%q not valid/supported", e.Type)
|
return fmt.Errorf("File type=%q not valid/supported", e.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -696,7 +696,8 @@ func (p *S3Path) RenderTerraform(w *terraformWriter.TerraformWriter, name string
|
||||||
}
|
}
|
||||||
|
|
||||||
// render DO's terraform
|
// render DO's terraform
|
||||||
if p.scheme == "do" {
|
switch p.scheme {
|
||||||
|
case "do":
|
||||||
|
|
||||||
content, err := w.AddFileBytes("digitalocean_spaces_bucket_object", name, "content", bytes, false)
|
content, err := w.AddFileBytes("digitalocean_spaces_bucket_object", name, "content", bytes, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -719,7 +720,7 @@ func (p *S3Path) RenderTerraform(w *terraformWriter.TerraformWriter, name string
|
||||||
return w.RenderResource("digitalocean_spaces_bucket_object", name, tf)
|
return w.RenderResource("digitalocean_spaces_bucket_object", name, tf)
|
||||||
|
|
||||||
// render Scaleway's Terraform objects
|
// render Scaleway's Terraform objects
|
||||||
} else if p.scheme == "scw" {
|
case "scw":
|
||||||
|
|
||||||
content, err := w.AddFileBytes("scaleway_object", name, "content", bytes, false)
|
content, err := w.AddFileBytes("scaleway_object", name, "content", bytes, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -733,7 +734,7 @@ func (p *S3Path) RenderTerraform(w *terraformWriter.TerraformWriter, name string
|
||||||
}
|
}
|
||||||
return w.RenderResource("scaleway_object", name, tf)
|
return w.RenderResource("scaleway_object", name, tf)
|
||||||
|
|
||||||
} else {
|
default:
|
||||||
bucketDetails, err := p.getBucketDetails(ctx)
|
bucketDetails, err := p.getBucketDetails(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in New Issue