github.com/noironetworks/cilium-net@v1.6.12/pkg/endpoint/regeneration/regeneration_context.go (about)

     1  // Copyright 2016-2019 Authors of Cilium
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package regeneration
    16  
    17  import (
    18  	"context"
    19  )
    20  
    21  // DatapathRegenerationLevel determines what is expected of the datapath when
    22  // a regeneration event is processed.
    23  type DatapathRegenerationLevel int
    24  
    25  const (
    26  	// RegenerateWithoutDatapath indicates that datapath rebuild or reload
    27  	// is not required to implement this regeneration.
    28  	RegenerateWithoutDatapath DatapathRegenerationLevel = iota
    29  	// RegenerateWithDatapathLoad indicates that the datapath must be
    30  	// reloaded but not recompiled to implement this regeneration.
    31  	RegenerateWithDatapathLoad
    32  	// RegenerateWithDatapathRewrite indicates that the datapath must be
    33  	// recompiled and reloaded to implement this regeneration.
    34  	RegenerateWithDatapathRewrite
    35  	// RegenerateWithDatapathRebuild indicates that the datapath must be
    36  	// fully recompiled and reloaded without using any cached templates.
    37  	RegenerateWithDatapathRebuild
    38  )
    39  
    40  // String converts a DatapathRegenerationLevel into a human-readable string.
    41  func (r DatapathRegenerationLevel) String() string {
    42  	switch r {
    43  	case RegenerateWithoutDatapath:
    44  		return "no-rebuild"
    45  	case RegenerateWithDatapathLoad:
    46  		return "reload"
    47  	case RegenerateWithDatapathRewrite:
    48  		return "rewrite+load"
    49  	case RegenerateWithDatapathRebuild:
    50  		return "compile+load"
    51  	default:
    52  		break
    53  	}
    54  	return "BUG: Unknown DatapathRegenerationLevel"
    55  }
    56  
    57  // ExternalRegenerationMetadata contains any information about a regeneration that
    58  // the endpoint subsystem should be made aware of for a given endpoint.
    59  type ExternalRegenerationMetadata struct {
    60  	// Reason provides context to source for the regeneration, which is
    61  	// used to generate useful log messages.
    62  	Reason string
    63  
    64  	// RegenerationLevel forces datapath regeneration according to the
    65  	// levels defined in the DatapathRegenerationLevel description.
    66  	RegenerationLevel DatapathRegenerationLevel
    67  
    68  	ParentContext context.Context
    69  }