Skip to content

Commit

Permalink
add ready status for provider network
Browse files Browse the repository at this point in the history
  • Loading branch information
zhangzujian committed Aug 23, 2021
1 parent ad1cf4b commit f415b1b
Show file tree
Hide file tree
Showing 10 changed files with 191 additions and 66 deletions.
5 changes: 5 additions & 0 deletions dist/images/install-pre-1.16.sh
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,9 @@ spec:
- name: DefaultInterface
type: string
JSONPath: .spec.defaultInterface
- name: Ready
type: boolean
JSONPath: .status.ready
validation:
openAPIV3Schema:
properties:
Expand Down Expand Up @@ -604,6 +607,8 @@ spec:
status:
type: object
properties:
ready:
type: boolean
readyNodes:
type: array
items:
Expand Down
5 changes: 5 additions & 0 deletions dist/images/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,8 @@ spec:
status:
type: object
properties:
ready:
type: boolean
readyNodes:
type: array
items:
Expand Down Expand Up @@ -667,6 +669,9 @@ spec:
- name: DefaultInterface
type: string
jsonPath: .spec.defaultInterface
- name: Ready
type: boolean
jsonPath: .status.ready
scope: Cluster
names:
plural: provider-networks
Expand Down
4 changes: 4 additions & 0 deletions pkg/apis/kubeovn/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,10 @@ type ProviderNetworkSpec struct {
}

type ProviderNetworkStatus struct {
// +optional
// +patchStrategy=merge
Ready bool `json:"ready" patchStrategy:"merge"`

// +optional
// +patchStrategy=merge
ReadyNodes []string `json:"readyNodes,omitempty" patchStrategy:"merge"`
Expand Down
37 changes: 23 additions & 14 deletions pkg/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,9 @@ type Controller struct {
vlansLister kubeovnlister.VlanLister
vlanSynced cache.InformerSynced

providerNetworksLister kubeovnlister.ProviderNetworkLister
providerNetworkSynced cache.InformerSynced
providerNetworksLister kubeovnlister.ProviderNetworkLister
providerNetworkSynced cache.InformerSynced
updateProviderNetworkQueue workqueue.RateLimitingInterface

addVlanQueue workqueue.RateLimitingInterface
delVlanQueue workqueue.RateLimitingInterface
Expand Down Expand Up @@ -204,8 +205,9 @@ func NewController(config *Configuration) *Controller {
delVlanQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "DelVlan"),
updateVlanQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateVlan"),

providerNetworksLister: providerNetworkInformer.Lister(),
providerNetworkSynced: providerNetworkInformer.Informer().HasSynced,
providerNetworksLister: providerNetworkInformer.Lister(),
providerNetworkSynced: providerNetworkInformer.Informer().HasSynced,
updateProviderNetworkQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "UpdateProviderNetwork"),

podsLister: podInformer.Lister(),
podsSynced: podInformer.Informer().HasSynced,
Expand Down Expand Up @@ -309,6 +311,10 @@ func NewController(config *Configuration) *Controller {
UpdateFunc: controller.enqueueUpdateVlan,
})

providerNetworkInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
UpdateFunc: controller.enqueueUpdateProviderNetwork,
})

if config.EnableNP {
npInformer := informerFactory.Networking().V1().NetworkPolicies()
controller.npsLister = npInformer.Lister()
Expand Down Expand Up @@ -360,32 +366,32 @@ func (c *Controller) Run(stopCh <-chan struct{}) {
}

if err := c.InitDefaultVpc(); err != nil {
klog.Fatalf("failed to init default vpc %v", err)
klog.Fatalf("failed to init default vpc: %v", err)
}

if err := c.InitOVN(); err != nil {
klog.Fatalf("failed to init ovn resource %v", err)
klog.Fatalf("failed to init ovn resource: %v", err)
}

if err := c.InitIPAM(); err != nil {
klog.Fatalf("failed to init ipam %v", err)
klog.Fatalf("failed to init ipam: %v", err)
}

if err := c.initDenyAllSecurityGroup(); err != nil {
klog.Fatalf("failed to init 'deny_all' security group, %v", err)
klog.Fatalf("failed to init 'deny_all' security group: %v", err)
}

// remove resources in ovndb that not exist any more in kubernetes resources
if err := c.gc(); err != nil {
klog.Fatalf("gc failed %v", err)
klog.Fatalf("gc failed: %v", err)
}

c.registerSubnetMetrics()
if err := c.initSyncCrdIPs(); err != nil {
klog.Errorf("failed to sync crd ips %v", err)
klog.Errorf("failed to sync crd ips: %v", err)
}
if err := c.initSyncCrdSubnets(); err != nil {
klog.Errorf("failed to sync crd subnets %v", err)
klog.Errorf("failed to sync crd subnets: %v", err)
}
if err := c.initSyncCrdVlans(); err != nil {
klog.Errorf("failed to sync crd vlans: %v", err)
Expand Down Expand Up @@ -424,6 +430,8 @@ func (c *Controller) shutdown() {
c.delVlanQueue.ShutDown()
c.updateVlanQueue.ShutDown()

c.updateProviderNetworkQueue.ShutDown()

c.addOrUpdateVpcQueue.ShutDown()
c.updateVpcStatusQueue.ShutDown()
c.delVpcQueue.ShutDown()
Expand Down Expand Up @@ -468,7 +476,7 @@ func (c *Controller) startWorkers(stopCh <-chan struct{}) {
time.Sleep(3 * time.Second)
lss, err := c.ovnClient.ListLogicalSwitch()
if err != nil {
klog.Fatalf("failed to list logical switch, %v", err)
klog.Fatalf("failed to list logical switch: %v", err)
}

if util.IsStringIn(c.config.DefaultLogicalSwitch, lss) && util.IsStringIn(c.config.NodeSwitch, lss) {
Expand All @@ -491,7 +499,7 @@ func (c *Controller) startWorkers(stopCh <-chan struct{}) {
time.Sleep(3 * time.Second)
nodes, err := c.nodesLister.List(labels.Everything())
if err != nil {
klog.Fatalf("failed to list nodes, %v", err)
klog.Fatalf("failed to list nodes: %v", err)
}
for _, node := range nodes {
if node.Annotations[util.AllocatedAnnotation] != "true" {
Expand All @@ -510,6 +518,7 @@ func (c *Controller) startWorkers(stopCh <-chan struct{}) {

go wait.Until(c.runDelVpcWorker, time.Second, stopCh)
go wait.Until(c.runUpdateVpcStatusWorker, time.Second, stopCh)
go wait.Until(c.runUpdateProviderNetworkWorker, time.Second, stopCh)

if c.config.EnableLb {
// run in a single worker to avoid delete the last vip, which will lead ovn to delete the loadbalancer
Expand Down Expand Up @@ -553,7 +562,7 @@ func (c *Controller) startWorkers(stopCh <-chan struct{}) {

go wait.Until(func() {
if err := c.markAndCleanLSP(); err != nil {
klog.Errorf("gc lsp error %v", err)
klog.Errorf("gc lsp error: %v", err)
}
}, 6*time.Minute, stopCh)

Expand Down

0 comments on commit f415b1b

Please sign in to comment.