Add selector to filter initinfra docs

airpship.org/phase: "initinfra" labeled documents are deployed with initinfra

Change-Id: Ie4c9421b9c4b3fe44e20a843f7a3b6551c5a7e6d
Closes: #125
This commit is contained in:
Pavel Basov 2020-03-24 19:43:48 +01:00
parent ea3c6a626b
commit af90464e66
4 changed files with 6 additions and 23 deletions

View File

@ -47,7 +47,7 @@ func (infra *Infra) Deploy() error {
ao.SetDryRun(infra.DryRun)
// If prune is true, set selector for purning
if infra.Prune {
ao.SetPrune(document.DeployedByLabel + "=" + document.InitinfraIdentifier)
ao.SetPrune(document.InitInfraSelector)
}
globalConf := infra.RootSettings.Config()
@ -65,8 +65,8 @@ func (infra *Infra) Deploy() error {
return err
}
// Returns documents marked with initinfra phase label
selector := document.NewInintInfraSelector()
// TODO (kkalynovskyi) Add Selector that would filter by label indicating wether to deploy it to k8s
docs, err := b.Select(selector)
if err != nil {
return err
@ -75,14 +75,5 @@ func (infra *Infra) Deploy() error {
return document.ErrDocNotFound{}
}
// Label every document indicating that it was deployed by initinfra module for further reference
// This may be used later to get all resources that are part of initinfra module, for monitoring, alerting
// upgrading etc...
// also if prune is set to true, this fulfills requirement for all labeled document to be labeled.
// Pruning by annotation is not available, therefore we need to use label.
for _, doc := range docs {
doc.Label(document.DeployedByLabel, document.InitinfraIdentifier)
}
return kctl.Apply(docs, ao)
}

View File

@ -4,7 +4,7 @@ metadata:
name: test-rc
namespace: test
labels:
airshipit.org/initinfra: "true"
airshipit.org/phase: "initinfra"
spec:
replicas: 1
template:

View File

@ -5,12 +5,7 @@ const (
BaseAirshipSelector = "airshipit.org"
EphemeralHostSelector = BaseAirshipSelector + "/ephemeral-node in (True, true)"
EphemeralUserDataSelector = BaseAirshipSelector + "/ephemeral-user-data in (True, true)"
// Labels
DeployedByLabel = BaseAirshipSelector + "/deployed"
// Identifiers (Static label values)
InitinfraIdentifier = "initinfra"
InitInfraSelector = BaseAirshipSelector + "/phase = initinfra"
)
// Kinds

View File

@ -99,10 +99,7 @@ func NewEphemeralNetworkDataSelector(bmhDoc Document) (Selector, error) {
return selector, nil
}
// NewInintInfraSelector returns selector of all initinfra documents
// TODO (kkalynovskyi) add selector that would specify if document
// should be deployed to kubernetes cluster when appropriate label
// is added
// NewInintInfraSelector returns selector to get deployable documents marked with initinfra label
func NewInintInfraSelector() Selector {
return NewSelector()
return NewSelector().ByLabel(InitInfraSelector)
}