mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #27695 from quinton-hoole/2016-06-17-create-federation-dns-zone-if-missing
Automatic merge from submit-queue Create federation dns zone if missing 1. Added Zones.Add() method to generic dnsprovider interface, as well as Google and AWS implementations. 2. Automatically add the configured zone name to the dnsprovider if it does not already exist.
This commit is contained in:
commit
4468e15fc7
@ -27,6 +27,11 @@ type Interface interface {
|
|||||||
type Zones interface {
|
type Zones interface {
|
||||||
// List returns the managed Zones, or an error if the list operation failed.
|
// List returns the managed Zones, or an error if the list operation failed.
|
||||||
List() ([]Zone, error)
|
List() ([]Zone, error)
|
||||||
|
// Add creates and returns a new managed zone, or an error if the operation failed
|
||||||
|
Add(Zone) (Zone, error)
|
||||||
|
// New allocates a new Zone, which can then be passed to Add()
|
||||||
|
// Arguments are as per the Zone interface below.
|
||||||
|
New(name string) (Zone, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Zone interface {
|
type Zone interface {
|
||||||
|
@ -18,7 +18,9 @@ package route53
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/aws/aws-sdk-go/service/route53"
|
"github.com/aws/aws-sdk-go/service/route53"
|
||||||
|
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||||
|
"k8s.io/kubernetes/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Compile time check for interface adeherence
|
// Compile time check for interface adeherence
|
||||||
@ -43,3 +45,19 @@ func (zones Zones) List() ([]dnsprovider.Zone, error) {
|
|||||||
}
|
}
|
||||||
return zoneList, nil
|
return zoneList, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (zones Zones) Add(zone dnsprovider.Zone) (dnsprovider.Zone, error) {
|
||||||
|
dnsName := zone.Name()
|
||||||
|
input := route53.CreateHostedZoneInput{Name: &dnsName}
|
||||||
|
output, err := zones.interface_.service.CreateHostedZone(&input)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &Zone{output.HostedZone, &zones}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (zones Zones) New(name string) (dnsprovider.Zone, error) {
|
||||||
|
id := string(util.NewUUID())
|
||||||
|
managedZone := route53.HostedZone{Id: &id, Name: &name}
|
||||||
|
return &Zone{&managedZone, &zones}, nil
|
||||||
|
}
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.Change = Change{}
|
var _ interfaces.Change = Change{}
|
||||||
|
|
||||||
type Change struct{ impl *dns.Change }
|
type Change struct{ impl *dns.Change }
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
|
var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
|
||||||
|
|
||||||
type ChangesCreateCall struct{ impl *dns.ChangesCreateCall }
|
type ChangesCreateCall struct{ impl *dns.ChangesCreateCall }
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ChangesService = ChangesService{}
|
var _ interfaces.ChangesService = ChangesService{}
|
||||||
|
|
||||||
type ChangesService struct{ impl *dns.ChangesService }
|
type ChangesService struct{ impl *dns.ChangesService }
|
||||||
|
@ -133,10 +133,11 @@ type (
|
|||||||
|
|
||||||
ManagedZonesService interface {
|
ManagedZonesService interface {
|
||||||
// NewManagedZonesService(s *Service) *ManagedZonesService // TODO: Add to service if needed
|
// NewManagedZonesService(s *Service) *ManagedZonesService // TODO: Add to service if needed
|
||||||
Create(project string, managedzone ManagedZone) ManagedZonesCreateCall
|
Create(project string, managedZone ManagedZone) ManagedZonesCreateCall
|
||||||
Delete(project string, managedZone string) ManagedZonesDeleteCall
|
Delete(project string, managedZone string) ManagedZonesDeleteCall
|
||||||
Get(project string, managedZone string) ManagedZonesGetCall
|
Get(project string, managedZone string) ManagedZonesGetCall
|
||||||
List(project string) ManagedZonesListCall
|
List(project string) ManagedZonesListCall
|
||||||
|
NewManagedZone(dnsName string) ManagedZone
|
||||||
}
|
}
|
||||||
|
|
||||||
Project interface {
|
Project interface {
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZone = ManagedZone{}
|
var _ interfaces.ManagedZone = ManagedZone{}
|
||||||
|
|
||||||
type ManagedZone struct{ impl *dns.ManagedZone }
|
type ManagedZone struct{ impl *dns.ManagedZone }
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
|
var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
|
||||||
|
|
||||||
type ManagedZonesCreateCall struct{ impl *dns.ManagedZonesCreateCall }
|
type ManagedZonesCreateCall struct{ impl *dns.ManagedZonesCreateCall }
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
|
var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
|
||||||
|
|
||||||
type ManagedZonesDeleteCall struct{ impl *dns.ManagedZonesDeleteCall }
|
type ManagedZonesDeleteCall struct{ impl *dns.ManagedZonesDeleteCall }
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
|
var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
|
||||||
|
|
||||||
type ManagedZonesGetCall struct{ impl *dns.ManagedZonesGetCall }
|
type ManagedZonesGetCall struct{ impl *dns.ManagedZonesGetCall }
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
|
var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
|
||||||
|
|
||||||
type ManagedZonesListCall struct{ impl *dns.ManagedZonesListCall }
|
type ManagedZonesListCall struct{ impl *dns.ManagedZonesListCall }
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
|
var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
|
||||||
|
|
||||||
type ManagedZonesListResponse struct{ impl *dns.ManagedZonesListResponse }
|
type ManagedZonesListResponse struct{ impl *dns.ManagedZonesListResponse }
|
||||||
|
@ -19,8 +19,10 @@ package internal
|
|||||||
import (
|
import (
|
||||||
dns "google.golang.org/api/dns/v1"
|
dns "google.golang.org/api/dns/v1"
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
"k8s.io/kubernetes/pkg/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesService = &ManagedZonesService{}
|
var _ interfaces.ManagedZonesService = &ManagedZonesService{}
|
||||||
|
|
||||||
type ManagedZonesService struct{ impl *dns.ManagedZonesService }
|
type ManagedZonesService struct{ impl *dns.ManagedZonesService }
|
||||||
@ -40,3 +42,7 @@ func (m *ManagedZonesService) Get(project, managedZone string) interfaces.Manage
|
|||||||
func (m *ManagedZonesService) List(project string) interfaces.ManagedZonesListCall {
|
func (m *ManagedZonesService) List(project string) interfaces.ManagedZonesListCall {
|
||||||
return &ManagedZonesListCall{m.impl.List(project)}
|
return &ManagedZonesListCall{m.impl.List(project)}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *ManagedZonesService) NewManagedZone(dnsName string) interfaces.ManagedZone {
|
||||||
|
return &ManagedZone{impl: &dns.ManagedZone{Name: string(util.NewUUID()), DnsName: dnsName}}
|
||||||
|
}
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
|
var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
|
||||||
|
|
||||||
type ResourceRecordSet struct{ impl *dns.ResourceRecordSet }
|
type ResourceRecordSet struct{ impl *dns.ResourceRecordSet }
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
|
var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
|
||||||
|
|
||||||
type ResourceRecordSetsListCall struct {
|
type ResourceRecordSetsListCall struct {
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
|
var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
|
||||||
|
|
||||||
type ResourceRecordSetsListResponse struct {
|
type ResourceRecordSetsListResponse struct {
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
|
var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
|
||||||
|
|
||||||
type ResourceRecordSetsService struct {
|
type ResourceRecordSetsService struct {
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.Service = &Service{}
|
var _ interfaces.Service = &Service{}
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.Change = &Change{}
|
var _ interfaces.Change = &Change{}
|
||||||
|
|
||||||
type Change struct {
|
type Change struct {
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
|
var _ interfaces.ChangesCreateCall = ChangesCreateCall{}
|
||||||
|
|
||||||
type ChangesCreateCall struct {
|
type ChangesCreateCall struct {
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ChangesService = &ChangesService{}
|
var _ interfaces.ChangesService = &ChangesService{}
|
||||||
|
|
||||||
type ChangesService struct {
|
type ChangesService struct {
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZone = ManagedZone{}
|
var _ interfaces.ManagedZone = ManagedZone{}
|
||||||
|
|
||||||
type ManagedZone struct {
|
type ManagedZone struct {
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
|
var _ interfaces.ManagedZonesCreateCall = ManagedZonesCreateCall{}
|
||||||
|
|
||||||
type ManagedZonesCreateCall struct {
|
type ManagedZonesCreateCall struct {
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
|
var _ interfaces.ManagedZonesDeleteCall = ManagedZonesDeleteCall{}
|
||||||
|
|
||||||
type ManagedZonesDeleteCall struct {
|
type ManagedZonesDeleteCall struct {
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
|
var _ interfaces.ManagedZonesGetCall = ManagedZonesGetCall{}
|
||||||
|
|
||||||
type ManagedZonesGetCall struct {
|
type ManagedZonesGetCall struct {
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
|
var _ interfaces.ManagedZonesListCall = &ManagedZonesListCall{}
|
||||||
|
|
||||||
type ManagedZonesListCall struct {
|
type ManagedZonesListCall struct {
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
|
var _ interfaces.ManagedZonesListResponse = &ManagedZonesListResponse{}
|
||||||
|
|
||||||
type ManagedZonesListResponse struct{ ManagedZones_ []interfaces.ManagedZone }
|
type ManagedZonesListResponse struct{ ManagedZones_ []interfaces.ManagedZone }
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ManagedZonesService = &ManagedZonesService{}
|
var _ interfaces.ManagedZonesService = &ManagedZonesService{}
|
||||||
|
|
||||||
type ManagedZonesService struct {
|
type ManagedZonesService struct {
|
||||||
@ -39,3 +40,7 @@ func (m *ManagedZonesService) Get(project string, managedZone string) interfaces
|
|||||||
func (m *ManagedZonesService) List(project string) interfaces.ManagedZonesListCall {
|
func (m *ManagedZonesService) List(project string) interfaces.ManagedZonesListCall {
|
||||||
return &ManagedZonesListCall{m, project, nil, nil, ""}
|
return &ManagedZonesListCall{m, project, nil, nil, ""}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *ManagedZonesService) NewManagedZone(dnsName string) interfaces.ManagedZone {
|
||||||
|
return &ManagedZone{Service: m, Name_: dnsName}
|
||||||
|
}
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
|
var _ interfaces.ResourceRecordSet = ResourceRecordSet{}
|
||||||
|
|
||||||
type ResourceRecordSet struct {
|
type ResourceRecordSet struct {
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
|
var _ interfaces.ResourceRecordSetsListCall = &ResourceRecordSetsListCall{}
|
||||||
|
|
||||||
type ResourceRecordSetsListCall struct {
|
type ResourceRecordSetsListCall struct {
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
|
var _ interfaces.ResourceRecordSetsListResponse = &ResourceRecordSetsListResponse{}
|
||||||
|
|
||||||
type ResourceRecordSetsListResponse struct {
|
type ResourceRecordSetsListResponse struct {
|
||||||
|
@ -23,6 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
|
var _ interfaces.ResourceRecordSetsService = &ResourceRecordSetsService{}
|
||||||
|
|
||||||
type ResourceRecordSetsService struct {
|
type ResourceRecordSetsService struct {
|
||||||
|
@ -18,6 +18,7 @@ package stubs
|
|||||||
|
|
||||||
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
import "k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
var _ interfaces.Service = &Service{}
|
var _ interfaces.Service = &Service{}
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
|
@ -17,10 +17,14 @@ limitations under the License.
|
|||||||
package clouddns
|
package clouddns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
|
var _ dnsprovider.ResourceRecordSet = ResourceRecordSet{}
|
||||||
|
|
||||||
type ResourceRecordSet struct {
|
type ResourceRecordSet struct {
|
||||||
impl interfaces.ResourceRecordSet
|
impl interfaces.ResourceRecordSet
|
||||||
rrsets *ResourceRecordSets
|
rrsets *ResourceRecordSets
|
||||||
|
@ -24,6 +24,9 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/rrstype"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
|
var _ dnsprovider.ResourceRecordSets = ResourceRecordSets{}
|
||||||
|
|
||||||
type ResourceRecordSets struct {
|
type ResourceRecordSets struct {
|
||||||
zone *Zone
|
zone *Zone
|
||||||
impl interfaces.ResourceRecordSetsService
|
impl interfaces.ResourceRecordSetsService
|
||||||
|
@ -21,6 +21,9 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
|
var _ dnsprovider.Zone = &Zone{}
|
||||||
|
|
||||||
type Zone struct {
|
type Zone struct {
|
||||||
impl interfaces.ManagedZone
|
impl interfaces.ManagedZone
|
||||||
zones *Zones
|
zones *Zones
|
||||||
|
@ -21,6 +21,9 @@ import (
|
|||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/google/clouddns/internal/interfaces"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Compile time check for interface adeherence
|
||||||
|
var _ dnsprovider.Zones = Zones{}
|
||||||
|
|
||||||
type Zones struct {
|
type Zones struct {
|
||||||
impl interfaces.ManagedZonesService
|
impl interfaces.ManagedZonesService
|
||||||
interface_ *Interface
|
interface_ *Interface
|
||||||
@ -39,6 +42,20 @@ func (zones Zones) List() ([]dnsprovider.Zone, error) {
|
|||||||
return zoneList, nil
|
return zoneList, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (zones Zones) Add(zone dnsprovider.Zone) (dnsprovider.Zone, error) {
|
||||||
|
managedZone := zones.impl.NewManagedZone(zone.Name())
|
||||||
|
response, err := zones.impl.Create(zones.project(), managedZone).Do()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &Zone{response, &zones}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (zones Zones) New(name string) (dnsprovider.Zone, error) {
|
||||||
|
managedZone := zones.impl.NewManagedZone(name)
|
||||||
|
return &Zone{managedZone, &zones}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (zones Zones) project() string {
|
func (zones Zones) project() string {
|
||||||
return zones.interface_.project()
|
return zones.interface_.project()
|
||||||
}
|
}
|
||||||
|
@ -263,6 +263,19 @@ func (s *ServiceController) init() error {
|
|||||||
return fmt.Errorf("the dns provider does not support zone enumeration, which is required for creating dns records.")
|
return fmt.Errorf("the dns provider does not support zone enumeration, which is required for creating dns records.")
|
||||||
}
|
}
|
||||||
s.dnsZones = zones
|
s.dnsZones = zones
|
||||||
|
if _, err := getDnsZone(s.zoneName, s.dnsZones); err != nil {
|
||||||
|
glog.Infof("DNS zone %q not found. Creating DNS zone %q.", s.zoneName, s.zoneName)
|
||||||
|
managedZone, err := s.dnsZones.New(s.zoneName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
zone, err := s.dnsZones.Add(managedZone)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
glog.Infof("DNS zone %q successfully created. Note that DNS resolution will not work until you have registered this name with "+
|
||||||
|
"a DNS registrar and they have changed the authoritative name servers for your domain to point to your DNS provider.", zone.Name())
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user