diff --git a/Makefile b/Makefile index 808f428579..c789812bd6 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ $(REGISTRY_CMDS): version_flags=-ldflags "-X '$(REGISTRY_PKG)/cmd/opm/version.gi $(REGISTRY_CMDS): go build $(version_flags) $(GO_BUILD_OPTS) $(GO_BUILD_TAGS) -o $@ $(REGISTRY_PKG)/cmd/$(notdir $@) -$(OLM_CMDS): version_flags=-ldflags "-X $(OLM_PKG)/pkg/version.GitCommit=$(GIT_COMMIT) -X $(OLM_PKG)/pkg/version.OLMVersion=`cat staging/operator-lifecycle-manager/OLM_VERSION`" +$(OLM_CMDS): version_flags=-ldflags "-X $(OLM_PKG)/pkg/version.GitCommit=$(GIT_COMMIT) -X $(OLM_PKG)/pkg/version.OLMVersion=`cat staging/operator-lifecycle-manager/OLM_VERSION` -X $(API_PKG)/pkg/operators/v1.UnsafeFailForwardUpgradeStrategy=TechPreviewUnsafeFailForward" $(OLM_CMDS): go build $(version_flags) $(GO_BUILD_OPTS) $(GO_BUILD_TAGS) -o bin/$(shell basename $@) $@ diff --git a/manifests/0000_50_olm_00-operatorgroups.crd.yaml b/manifests/0000_50_olm_00-operatorgroups.crd.yaml index 36e90f667f..5ab5376a27 100644 --- a/manifests/0000_50_olm_00-operatorgroups.crd.yaml +++ b/manifests/0000_50_olm_00-operatorgroups.crd.yaml @@ -39,6 +39,8 @@ spec: spec: description: OperatorGroupSpec is the spec for an OperatorGroup resource. type: object + default: + upgradeStrategy: Default properties: selector: description: Selector selects the OperatorGroup's target namespaces. @@ -82,8 +84,14 @@ spec: items: type: string x-kubernetes-list-type: set + upgradeStrategy: + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace. OperatorGroupStatus is the status for an OperatorGroupResource." + type: string + default: Default + enum: + - Default + - TechPreviewUnsafeFailForward status: - description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object required: - lastUpdated diff --git a/scripts/generate_crds_manifests.sh b/scripts/generate_crds_manifests.sh index df6cabb105..8cfdcba94a 100755 --- a/scripts/generate_crds_manifests.sh +++ b/scripts/generate_crds_manifests.sh @@ -24,6 +24,11 @@ rm -rf ./manifests/* ${crddir}/* trap "rm -rf ${tmpdir}" EXIT + +# SED Commands +sed -i 's/+kubebuilder:validation:Enum=Default;UnsafeFailForward/+kubebuilder:validation:Enum=Default;TechPreviewUnsafeFailForward/g' staging/api/pkg/operators/v1/operatorgroup_types.go + + ${CONTROLLER_GEN} crd:crdVersions=v1 output:crd:dir=${crddir} paths=${crdsrcdir}/... ${CONTROLLER_GEN} schemapatch:manifests=${crddir} output:dir=${crddir} paths=${crdsrcdir}/... diff --git a/staging/api/crds/operators.coreos.com_operatorgroups.yaml b/staging/api/crds/operators.coreos.com_operatorgroups.yaml index 56ef0b5c4f..d63a7b78c5 100644 --- a/staging/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/staging/api/crds/operators.coreos.com_operatorgroups.yaml @@ -37,6 +37,8 @@ spec: spec: description: OperatorGroupSpec is the spec for an OperatorGroup resource. type: object + default: + upgradeStrategy: Default properties: selector: description: Selector selects the OperatorGroup's target namespaces. @@ -80,8 +82,14 @@ spec: items: type: string x-kubernetes-list-type: set + upgradeStrategy: + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace. OperatorGroupStatus is the status for an OperatorGroupResource." + type: string + default: Default + enum: + - Default + - UnsafeFailForward status: - description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object required: - lastUpdated diff --git a/staging/api/crds/zz_defs.go b/staging/api/crds/zz_defs.go index 31a7d8bb5e..22bfcf53ff 100644 --- a/staging/api/crds/zz_defs.go +++ b/staging/api/crds/zz_defs.go @@ -185,7 +185,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x94\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\xa2\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x6e\x39\x49\xbb\xdd\x85\xfc\x25\xd1\xf0\x7a\xe7\xef\x1d\xa4\x28\xe5\xaf\x68\x9d\x34\x7a\x04\xa2\x94\xf8\xe0\x51\xd3\x2f\x97\xdc\x7e\xef\x12\x69\x86\x77\xc7\x07\xb7\x52\x67\x23\x78\x59\x39\x6f\x8a\x0f\xe8\x4c\x65\x53\x7c\x85\x13\xa9\xa5\x97\x46\x1f\x14\xe8\x45\x26\xbc\x18\x1d\x00\x08\xad\x8d\x17\xf4\xd9\xd1\x4f\x80\xd4\x68\x6f\x8d\x52\x68\x07\x39\xea\xe4\xb6\x1a\xe3\xb8\x92\x2a\x43\xcb\x9b\xd7\x47\xdf\x3d\x4b\xbe\x4f\x9e\x1d\x00\xa4\x16\x79\xf9\xa5\x2c\xd0\x79\x51\x94\x23\xd0\x95\x52\x07\x00\x5a\x14\x38\x02\x53\xa2\x15\xde\xd8\xdc\x9a\xaa\x74\x49\xfd\xd3\x25\xa9\xb1\x68\xe8\x9f\xe2\xc0\x95\x98\xd2\xe9\x3c\xa7\x5d\x32\x37\x27\xec\x57\x13\x29\x3c\xe6\xc6\xca\xfa\x37\xc0\x00\x8c\x2a\xf8\xff\x81\xf9\xf7\x71\x8f\x9f\x68\x4b\xfe\xae\xa4\xf3\x3f\x2f\x8f\xbd\x91\xce\xf3\x78\xa9\x2a\x2b\xd4\x22\xc1\x3c\xe4\xa6\xc6\xfa\x77\xed\xf1\x7c\x5c\x1e\x86\xa4\xce\x2b\x25\xec\xc2\xba\x03\x00\x97\x9a\x12\x47\xc0\xcb\x4a\x91\x62\x76\x00\x10\xc5\x17\xb7\x19\x44\x11\xdd\x1d\xc7\x5d\x5d\x3a\xc5\x42\xd4\x67\x00\x6d\xa9\x4f\xcf\xcf\x7e\xfd\xf6\x62\x61\x00\x20\x43\x97\x5a\x59\x7a\x56\xc6\x1c\x43\x20\x1d\xf8\x29\x42\xa5\xa5\x07\x33\x81\xa2\x52\x5e\x7a\xd4\x42\xa7\x33\x98\x18\x0b\xef\xdf\xbc\x85\x42\x68\x91\x63\xd6\x11\x35\x9c\x79\xd2\xbd\xf3\x56\x48\x1d\x76\x90\xda\x79\xa1\x14\xab\x97\x76\x6a\x26\x83\xd4\x20\xbd\x0b\x1a\x21\xde\xc0\x1b\x10\x40\x6a\x94\x13\x89\x19\x38\xe4\xa3\xbd\xb0\x39\xfa\x76\x9a\x4b\x3a\x1c\xf8\x19\x89\xc7\x8c\x7f\xc7\xd4\x77\x3e\x5b\xfc\xa3\x92\x16\xb3\x2e\xb3\x24\xaa\xda\x68\x3b\x9f\x4b\x4b\x14\xf9\x8e\x15\x84\xbf\x8e\x8b\xcc\x7d\x5f\x90\xda\x13\x12\x6d\x98\x07\x19\x79\x07\x06\xb6\xa3\x92\x88\x0d\x16\x3b\x73\x32\x95\x0e\x2c\x96\x16\x1d\x6a\xdf\x48\x44\xe8\xc8\x40\x02\x17\x68\x69\x21\xd9\x4a\xa5\x32\x12\xe5\x1d\x5a\x0f\x16\x53\x93\x6b\xf9\x67\xb3\x9b\x23\x59\xd1\x31\x4a\x78\x74\x1e\xa4\xf6\x68\xb5\x50\x70\x27\x54\x85\x7d\x10\x3a\x83\x42\xcc\xc0\x22\xed\x0b\x95\xee\xec\xc0\x53\x5c\x02\x6f\x8d\x25\xed\x4c\xcc\x08\xa6\xde\x97\x6e\x34\x1c\xe6\xd2\xd7\x00\x90\x9a\xa2\x20\xe5\xcf\x86\xec\xcb\x72\x5c\x91\xce\x86\x19\xde\xa1\x1a\x3a\x99\x0f\x84\x4d\xa7\xd2\x63\xea\x2b\x8b\x43\x51\xca\x01\x13\xab\x19\x04\x92\x22\xfb\xc6\x46\xc8\x70\x4f\x16\xc4\x17\x54\xe6\xbc\x95\x3a\x9f\x1b\x62\x9f\xdb\x28\x6b\xf2\x3c\xb2\x4c\x11\x97\x07\x5e\x5a\x91\xd2\x27\x92\xca\x87\x1f\x2f\x2e\xa1\x26\x20\x88\x3d\x48\xb8\x9d\xea\x5a\x61\x93\xa0\xa4\x9e\xa0\x0d\x33\x27\xd6\x14\xbc\x0b\xea\xac\x34\x52\x7b\xfe\x91\x2a\x89\xda\x83\xab\xc6\x05\x19\x2d\x19\x18\x3a\x4f\x7a\x48\xe0\x25\xe3\x1f\x8c\x11\xaa\x32\x13\x1e\xb3\x04\xce\x34\xbc\x14\x05\xaa\x97\xc2\xe1\x5f\x2e\x6a\x92\xa8\x1b\x90\xf8\x76\x17\x76\x17\xbe\x97\x17\x2c\x39\x14\x40\x0d\xaf\x6b\xb5\x33\x87\x1f\x17\x25\xa6\x35\x86\xd0\x4a\xc6\x0c\xa1\x17\x40\xa6\x56\x51\xb2\x2b\x11\xeb\xdd\x95\x49\x44\x85\xa9\x37\x76\x79\x64\x81\xd4\x8b\x38\x31\xae\x08\x64\xce\x91\xf6\xc4\x6d\xc6\x9d\x1d\x28\xdd\x46\x2d\x6b\x41\xf8\x74\xfa\xe3\x03\xd9\x64\x07\xd2\xb7\x50\xbf\xb8\x28\x78\x04\x45\x26\x42\x13\x25\xc6\xa8\x1a\x51\xd4\x48\x58\x04\x93\xbf\x9c\xe2\xdc\x17\x10\x16\xe1\xf4\xdd\x2b\xcc\x56\x31\xd7\x32\x28\xac\x15\xb3\x35\x33\xa4\xc7\x62\x2d\xe1\x0b\xa4\x9f\x6e\x20\x2f\x3a\x76\x3d\xe2\xa7\x82\x63\x89\xe7\x48\x12\x40\xab\x0f\x02\x6e\x71\x16\xf0\x8d\x60\x33\xaa\x2c\x4c\xb6\xc8\x68\xc8\xca\xbc\xc5\x19\x4f\x8a\x60\xb7\x96\xba\x2d\xfa\x0b\x7f\xab\xa3\xc9\xfc\xdf\x80\x8e\xdc\x38\x5e\x13\xbb\x76\xd2\x36\x63\x09\x7f\xb7\x38\xdb\x34\xbc\x20\x70\x92\x43\x74\xc3\x20\x79\xfa\xc0\xd2\x62\xcf\xac\x85\x2d\xca\x52\x49\x64\x34\xdb\xb8\xf7\x5a\x38\x99\xff\xab\x59\x7d\x04\xa1\x8d\x2a\x5b\x84\x0e\xca\x7e\xe2\x82\x62\xc9\xd2\xa7\xb2\x8c\x49\x42\x48\x0d\xea\x50\xf6\xab\x50\xb2\x93\x86\xb0\x55\x9f\xe9\x3e\xbc\x33\x9e\xfe\xf9\xf1\x41\x12\x54\x93\x3d\xbc\x32\xe8\xde\x19\xcf\x5f\xbe\x0a\xab\x81\x84\x47\x30\x1a\x16\xb0\xb1\xeb\xe0\x57\xc4\x49\x37\x9e\x51\x1a\x35\x61\xfd\x34\x42\x91\x8e\x22\x8a\xb1\x35\x47\x9c\x61\x84\x8d\xc2\x16\x45\xe5\x38\x00\x69\xa3\x07\x58\x94\x7e\xb6\x72\x8f\x28\x08\x63\xe7\xe4\xb0\x61\xbb\xb8\xd5\x25\xc5\xc5\x30\x12\x32\x18\x45\xa9\x28\x64\x15\x13\xcd\xd1\x98\x72\x69\x99\x42\x81\x36\x47\x28\x09\xa1\x76\x11\xef\x26\x5c\x09\x7f\x5b\xd0\x65\x47\x5d\x31\x64\xbe\x21\x07\x78\x04\xc4\x86\xf9\x01\x96\x0a\x51\x92\x9a\x3e\x12\xfa\xb0\xa4\x3e\x41\x29\x24\x65\xbc\xa7\x9c\xbd\x2b\x9c\x1b\x93\x9a\x65\xda\xdd\x86\x76\x90\x0e\x08\x4a\xee\x84\x22\xbc\x23\x4b\xd6\x80\x2a\xa0\x1f\x25\xd9\x0b\xc0\xde\x87\xfb\xa9\x71\x01\xcc\x26\x12\x15\xe7\x3e\xbd\x5b\x9c\xf5\xfa\x4b\xaa\xed\x9d\xe9\x5e\xc0\xc5\x25\x65\x36\x20\x6a\xb4\x9a\x41\x8f\xc7\x7a\x9f\x1f\x0b\x36\x82\xa5\xc8\x32\x2e\x0f\x85\x3a\xdf\x01\xcd\x36\xea\xcd\xa1\xbd\x93\x29\x9e\xa6\xa9\xa9\x34\x17\x4e\x3b\xc4\xf5\xc5\x25\x35\xf8\x89\xac\x90\x7a\xae\xb6\xe0\x99\x20\xc2\x54\xb8\x9f\xca\x74\x0a\xf7\x52\x29\x4e\xe3\x1c\x66\xa4\x9e\x0c\x4b\x65\x66\x8d\x9c\x0f\xdd\x51\xd0\x2c\xe5\x93\xb5\xec\xb9\x52\x5b\x9f\x1a\xac\x63\x8e\xd2\xff\xf4\xdc\x9a\x3b\x99\x61\x76\x7a\x7e\xb6\x52\x4a\xf3\xcc\xf1\x12\xf0\xa8\x94\xe3\xf2\x8b\x72\x4e\x6f\x62\xce\xb9\x32\x85\x29\x3b\xfb\x77\x8a\xf4\xb5\xc4\x8e\x8d\x51\x28\x96\xc7\x43\x2a\xd4\x14\xa1\xdb\x69\xbd\x5c\x58\x10\xe1\x0e\x1f\x4a\x25\x53\xe9\x6b\xfc\x6e\x73\x2b\xae\x67\x78\x11\x03\x97\xe4\x6c\xc0\xa1\xef\xb7\xb9\x9a\x74\x20\x73\x6d\xec\x6a\xfb\xdc\x8c\x27\x1b\x50\x64\x0b\x76\x3c\x0c\x6e\xab\x31\x5a\x8d\x1e\xdd\x80\x72\xac\x41\x5c\x80\x0b\xe9\xb1\x17\xbe\x5a\x3a\x62\x43\x82\xcc\xf3\x9b\x14\x39\xfc\x5a\x95\x24\x7f\x78\x7c\x8e\xbc\x3e\x5f\x19\x80\x12\xce\xff\x12\xaa\x94\x47\x64\xd6\xa9\xd1\xc1\xaf\xb7\xab\xfe\x65\x33\x75\x31\xc6\xad\xb2\xd0\x76\xe3\xaf\xaa\xd4\x39\x8a\x7a\x0d\x49\x2d\x14\x66\xe8\x85\x54\x41\xe2\x46\x23\x08\x82\x06\x5f\x53\x99\x56\xd6\x72\xb5\xe7\xc9\xb3\xea\xca\xfd\xf4\xfc\x0c\x1a\x6d\xc0\x60\x30\x08\x71\xd1\x79\x5b\xa5\x6c\xaf\x54\x85\xeb\x0c\x33\xde\x35\x93\x96\x4b\x6f\x47\x9b\xb7\x72\x88\x99\x57\x80\xf3\x52\xf8\x29\x24\x41\xf9\x49\x47\x14\x00\xaf\x8d\x05\x7c\x10\x45\xa9\xb0\xcf\x62\x80\xd7\xc6\x44\x9b\x09\x07\x7e\x84\xe1\x10\x3e\xb4\xc9\x12\x07\x84\x31\xe1\x5a\xc8\x95\xb8\xb3\x00\x13\x63\x48\xca\x5d\x7e\x12\x5a\xf8\xb3\x36\xf7\x7a\xd5\xd1\x7c\x96\xb0\x38\x82\xeb\xde\xe9\x9d\x90\x4a\x8c\x15\x5e\xf7\xfa\x70\xdd\x3b\xb7\x26\xe7\xd0\xa4\xf3\xeb\x18\x6b\xae\x7b\xaf\x30\xb7\x22\xc3\xec\xba\x47\xdb\xfe\x2b\x47\xfe\xb7\x94\x04\xfc\x8c\xb3\xe7\xbc\x59\xf3\xf9\x22\x64\x09\xb3\xe7\x21\x49\xa0\xef\xe4\x50\x97\xb3\x12\x9f\x53\x74\xac\x3f\xbc\x15\x65\xb3\xb8\x63\x4d\x57\x37\x54\xb3\xde\x1d\x27\xad\x3a\x7f\xfb\xdd\x19\x3d\xba\xee\xb5\xf4\xf7\x4d\x41\x66\x51\xfa\xd9\x75\x0f\xe6\x4e\x1d\x5d\xf7\xf8\xdc\xfa\x7b\x4d\xe4\xe8\xba\x47\x27\xd1\x67\x6b\xbc\x19\x57\x93\xd1\x75\x6f\x3c\xf3\xe8\xfa\xc7\x7d\x8b\x65\x9f\x40\xea\x79\x7b\xc2\x75\xef\x37\xb8\xd6\x44\xac\xf1\x53\xb4\x41\x93\x0e\x3e\xf5\x36\xa0\xcb\x86\x90\xb9\xad\xb6\x08\x1e\x7b\x69\x85\x76\xb2\xee\x90\xae\x9d\x5a\xa0\x73\x22\x5f\x3f\x6e\x51\xb8\x95\xf0\x1f\x86\x83\x35\xac\x1d\x26\x5e\x56\x0e\x6e\x2f\x5c\x96\x79\xd8\xb1\x60\x5c\x5e\xd8\x96\x33\xce\x83\xa7\x0f\xec\xb1\x8d\x4d\xf8\x66\x36\x39\xa2\x35\x05\xfb\x77\x04\x58\x4e\xb9\x58\x6f\x31\xa9\x8d\x8d\xb6\x31\xc2\xfd\x14\x75\x6c\x79\x66\x68\xd5\x8c\x32\xdb\x76\xd7\x74\x2a\x74\x8e\x59\x02\x21\xad\x16\xec\xef\x14\x80\x6f\xc9\x91\x38\x1d\xd3\x50\xb9\xba\x01\xc5\x74\x35\x3b\x12\x70\x04\x87\x8f\xdb\x30\x32\xa6\x29\x96\x9e\xbc\x6b\x5b\x75\xba\xa5\x06\x99\x18\x5b\x08\x3f\x02\xc2\xf4\x81\x5f\x6f\x1e\xd1\x38\x76\x14\x7c\x9c\x1d\xb2\xdf\x69\x55\x08\x4d\xd6\x93\x11\xbd\xed\x98\xce\x64\x2a\xb8\xeb\x56\xe3\xa9\x18\x9b\x2a\x20\x5c\xab\x87\x28\xea\x42\xcc\x48\xce\x94\x06\x90\x7f\x46\xb6\xbe\x90\xf9\x42\x3c\xbc\x41\x9d\xfb\xe9\x08\xbe\x3d\xf9\xf7\xef\xbe\x5f\x33\x31\x00\x23\x66\x3f\xa1\xa6\xf8\xb3\xa2\xa9\xbb\x46\x0c\xcb\x0b\xbb\x05\x2a\xf1\x99\xd4\x9d\xb4\x24\x6f\xe7\x34\x15\x76\x6b\x41\xf7\x82\x13\x1a\x18\x0b\x4a\x2e\xab\x92\xe4\x42\x28\xcf\xfd\x71\x9d\x62\x1f\xe4\x64\xf5\x66\xb2\x01\x70\x35\x83\xe3\x93\x3e\x8c\xa3\x88\x97\xe1\xfb\xea\xe1\x26\x59\x41\xb2\x74\xf0\x43\x7f\x81\x1e\xca\x61\x2b\x8e\x78\x9c\x3e\xde\x4b\x3f\x05\x8b\x21\x0c\xc6\xe6\xf2\x8a\x30\x88\x0d\xbd\xdb\x14\x47\xc1\x30\xc7\xf5\xdd\x8e\xda\x6c\xa5\xf6\xdf\xfd\xdb\x7a\xfd\x4a\x2d\x8b\xaa\x18\xc1\xb3\x35\x53\x02\xa4\xed\xa8\xcd\x30\xb9\xcd\x02\x04\x41\x57\x6e\x45\x51\x70\x6a\x2d\x33\xd4\x9e\xea\x03\xdb\x35\x6d\xcf\x75\x12\x2f\x9c\x70\xab\xa9\x23\xc5\x27\x2e\xe2\x50\xc7\xd8\xcf\xad\xc9\xaa\x14\x2d\x47\xe0\x58\x71\xa4\x5d\x80\x9a\x95\x18\xbc\x21\xdc\x17\x50\x56\x8c\xa9\x6f\x3a\xf3\xa1\x79\x8f\x42\x4b\x9d\xbb\x78\xa4\x74\x01\x40\x42\xd4\xbd\x9f\x22\x87\x9e\xb9\x4a\x8f\xa9\x72\x32\x43\x8b\x19\x08\xc8\x2b\x61\x85\xf6\x88\x19\xc1\x4f\xa8\xf6\x42\xb7\xbc\x85\x3c\xd1\xf6\xa8\x6b\x6f\x0c\xae\x1a\xc0\x8a\x48\x8c\x7d\xed\xd0\x07\xf8\x6a\xae\x7a\xfc\xec\x64\xa3\xca\x9b\x79\xeb\x7b\x65\xc2\x7b\xb4\x7a\x04\xff\x75\x75\x3a\xf8\x4f\x31\xf8\xf3\xe6\x30\xfe\xe7\xd9\xe0\x87\xff\xee\x8f\x6e\x9e\x76\x7e\xde\x1c\xbd\xf8\x97\x35\x3b\xad\x4e\xdb\xd7\x98\x4f\x0c\x22\x75\x92\x58\x6b\xb4\xcf\x11\xc6\x4c\xe0\xd2\x56\xd8\x87\xd7\x42\x39\xec\xc3\x2f\x9a\x43\xc3\x17\x0a\x0d\x75\x55\x6c\x6e\x3b\xf6\xe8\xd4\xd5\xc9\x47\x33\x85\x49\xda\x3c\x27\x92\xbb\xa9\xf2\xdf\x4d\x48\x9c\xb6\x99\x49\x17\x69\x3a\x77\x21\xc0\x88\x47\x69\x69\x12\xd3\xdb\x24\x35\xc5\xb0\x73\x57\x42\x79\xf5\x5b\xa1\x67\xd0\xc2\x5a\x48\x4a\x17\x2d\xdd\x79\xc2\x26\x91\x5a\xe3\x5c\x73\x93\xe0\x40\xc9\x5b\x84\x26\x73\x0d\x60\x39\xc6\x54\x70\x22\x6e\xc7\xd2\x5b\x61\x67\x9d\xba\x03\x52\xa1\x63\xcd\x3f\xa9\x14\x1c\x3a\x44\x48\xb4\xc9\x70\x19\x5d\x8f\x02\x86\x8a\xb1\x54\xd2\xcf\x42\x83\x20\x35\x7a\xa2\x64\xcc\xff\x8b\xd2\x58\x2f\xb4\xaf\x9b\x2b\x39\x3e\x50\x29\xcb\x7d\x9d\x50\x04\x1f\x66\xda\x1d\x1f\x9f\x7c\x7b\x51\x8d\x33\x53\x08\xa9\x5f\x17\x7e\x78\xf4\xe2\xf0\x8f\x4a\x28\xee\x4c\x50\xcd\xfc\xba\xf0\x47\x5f\x2f\x2c\x1e\x7f\xb7\x83\x17\x1d\x5e\x05\x5f\xb9\x39\xbc\x1a\xc4\xff\x3d\xad\x3f\x1d\xbd\x38\xbc\x4e\x36\x8e\x1f\x3d\x25\x1e\x3a\x1e\x78\x73\x35\x68\xdd\x2f\xb9\x79\x7a\xf4\xa2\x33\x76\xb4\xec\x8c\x9d\xaa\x74\x6b\x81\xf9\xa6\x9d\x1b\xb2\x13\x5f\x3f\x1a\xa8\x3d\x73\x3e\x35\x5c\x2c\x39\xa3\x17\x53\x3c\x8e\xdb\x3c\xba\x7b\xb3\x4b\xd2\xa5\x77\xef\x96\xcc\xf7\x49\x42\x63\x7e\xf5\xd5\x77\x13\x81\xe6\x98\xfa\x27\xf6\x43\x60\xa9\x83\xf7\x01\x27\x8f\x6c\xe0\x7d\xc0\x09\x58\x9c\xa0\x45\x9d\x62\x2d\x98\xf9\xbe\x5d\xbc\xd6\x6d\x1a\x7b\x7f\xc1\x1d\xdd\xfa\x87\x00\x2b\x59\xa0\x64\x3f\x5e\xfe\xd7\xf6\x18\x79\x58\x7b\xe1\xb0\xd5\xa5\x39\x1e\x9f\x0b\x3f\xdd\x89\x82\x27\x67\x51\x6c\xdc\x9d\xe7\xfb\x92\x52\x62\x8a\x73\x6f\x0d\x38\x8f\x43\x91\xc5\x8f\x94\xf8\x58\x8c\x63\xfd\x90\x71\xc4\x3b\x89\xf6\x2d\x02\x25\x4d\x20\x08\x88\x65\x06\xff\x71\xf1\xfe\xdd\xf0\x27\x13\x73\x05\xaa\x66\x5c\xf0\x2d\xee\x26\xf7\xc1\x55\xe9\x14\x84\x23\xd2\xa8\xbe\xbd\xe0\xd6\x43\x21\xb4\x9c\xa0\xf3\x49\xdc\x0d\xad\xbb\x3a\xb9\x49\xe6\xdb\x1d\x32\x5e\x5c\xd4\x37\xf6\xd1\x00\xd8\x37\x88\x99\x66\x2d\x27\xad\x4c\x52\x69\xb2\x48\xf4\x3d\x13\xeb\xc5\x2d\x82\x89\xc4\x56\xc8\x41\x61\x04\x3d\x32\x93\xce\xd1\x1f\xc9\xb1\x3e\xf5\xe0\xf0\x7e\x8a\x16\xa1\x47\x3f\x7b\xe1\xc0\xe6\x81\x05\x7d\xeb\x44\xfc\x78\x70\xc8\xef\xad\xcc\x73\x4e\xb7\xf8\xb5\xc0\x1d\x6a\x7f\xc4\xf1\x6d\x02\xda\x74\x26\xeb\xd8\x87\x6e\xbb\xcf\x8b\x84\x5c\x9d\xdc\xf4\xe0\x70\x9e\x2f\x4a\x41\xf1\x01\x4e\x9a\x8e\x73\x69\xb2\xa3\xba\x6a\x9d\x69\x2f\x1e\xb8\x30\x98\x1a\x87\x3a\x74\xf6\xbd\x81\xa9\xb8\x43\x70\x86\x8a\x4f\x54\x6a\x10\x12\xcc\x0c\xee\x43\x03\xae\x16\x65\xb8\xb4\x29\x85\xf5\x0b\xcf\x4f\x2e\xdf\xbf\x7a\x3f\x0a\xa7\x91\xda\x72\x5d\x57\xb9\x13\xa9\x85\x8a\xb7\x0b\x4d\x7e\x48\x84\x54\x41\x49\xde\xc4\xd2\xb6\xbe\xf9\x98\x54\xbe\xb2\x98\x2c\x3e\x47\xd8\xd9\xe2\x57\xbd\x05\x59\x6d\xec\xfc\x26\x64\xd1\xd1\xfe\x17\x5f\x5c\xec\xcc\xa2\x5e\x73\xa3\xb1\xcc\xe2\xbb\x8e\x0d\x6e\x64\xb1\x85\x66\xe2\x32\x33\xa9\x23\x06\x53\x2c\xbd\x1b\x9a\x3b\x82\x4e\xbc\x1f\xde\x1b\x7b\x2b\x75\x3e\x20\x23\x1b\x04\xcd\xbb\x21\x87\x98\xe1\x37\xfc\xcf\x17\x71\xc4\x71\x6a\x77\xb6\xc2\xc3\xaf\xbf\x81\x37\x0e\x9f\xc3\xcf\x66\xad\xce\x2f\x1f\x13\x09\x9e\x5c\xd4\xc5\xdf\xc2\x6a\x72\x97\x70\xe1\x14\x5f\x84\x75\x10\xae\x10\x59\x80\x40\xa1\x67\x7f\xb9\x19\x93\x00\xb9\xc6\x4f\x67\x83\xf8\x64\x73\x20\x74\x36\x68\xf2\xeb\x74\xf6\xd9\x12\xab\xe4\x8e\x0e\xfc\xcb\xd9\xab\xbf\xc7\xb8\x2b\xf9\x28\x6f\x0d\x5d\x94\x11\x78\x5b\xd5\xd9\x9d\xf3\xc6\x8a\x1c\xe7\xbf\x55\xe3\xa6\xf8\x68\x19\x8e\x75\x25\x7c\xfc\xc4\x9f\xda\x47\x9a\x42\x95\x53\x71\x52\xaf\xdd\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x28\xec\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\x2f\x63\x75\xff\x54\x73\xff\x54\x73\xff\x54\xb3\xf9\xdb\x3f\xd5\xdc\x91\xb9\xfd\x53\xcd\x7f\xfa\x53\xcd\xff\xdf\x8f\x2f\xf7\x97\x63\xff\x37\x2e\xc7\xf6\xd7\x5d\xfb\xeb\xae\xfd\x75\xd7\xfe\xba\xeb\x33\x2c\x7e\x7f\xdd\xb5\xbf\xee\xda\x5f\x77\xed\xaf\xbb\xfe\xa1\xd7\x5d\x13\xa1\xdc\xce\xf7\x5d\xff\x13\x00\x00\xff\xff\xc7\xa0\x23\x13\x5c\x46\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x7b\x6f\x1c\x37\x92\xff\xdf\x9f\xa2\x30\x7b\x80\xa5\xdc\x3c\x2c\xe7\x90\xcb\x0e\x10\x04\x82\x1d\x07\xba\xd8\xb2\x60\xc9\x39\xe0\x2c\xdd\x2d\xa7\xbb\xba\x87\x2b\x36\xd9\x4b\xb2\x67\x34\x1b\xe4\xbb\x1f\xaa\xc8\x7e\xcd\x4b\xa3\xc4\xde\xdd\x00\xd3\xff\x48\xc3\x67\x55\xb1\xea\x57\x0f\x52\x94\xf2\x67\xb4\x4e\x1a\x3d\x05\x51\x4a\x7c\xf0\xa8\xe9\x97\x1b\xdf\x7f\xeb\xc6\xd2\x4c\x16\x67\xcf\xee\xa5\x4e\xa7\xf0\xaa\x72\xde\x14\x1f\xd0\x99\xca\x26\xf8\x1a\x33\xa9\xa5\x97\x46\x3f\x2b\xd0\x8b\x54\x78\x31\x7d\x06\x20\xb4\x36\x5e\x50\xb3\xa3\x9f\x00\x89\xd1\xde\x1a\xa5\xd0\x8e\x72\xd4\xe3\xfb\x6a\x86\xb3\x4a\xaa\x14\x2d\x2f\x5e\x6f\xbd\x78\x31\xfe\x76\xfc\xe2\x19\x40\x62\x91\xa7\xdf\xc8\x02\x9d\x17\x45\x39\x05\x5d\x29\xf5\x0c\x40\x8b\x02\xa7\x60\x4a\xb4\xc2\x1b\x9b\x5b\x53\x95\x6e\x5c\xff\x74\xe3\xc4\x58\x34\xf4\xa7\x78\xe6\x4a\x4c\x68\x77\x1e\xd3\x4e\xe9\x8d\x09\xeb\xd5\x44\x0a\x8f\xb9\xb1\xb2\xfe\x0d\x30\x02\xa3\x0a\xfe\x3f\x30\xff\x3e\xae\xf1\x23\x2d\xc9\xed\x4a\x3a\xff\xd3\x66\xdf\x5b\xe9\x3c\xf7\x97\xaa\xb2\x42\xad\x13\xcc\x5d\x6e\x6e\xac\xbf\x6c\xb7\xe7\xed\xf2\xd0\x25\x75\x5e\x29\x61\xd7\xe6\x3d\x03\x70\x89\x29\x71\x0a\x3c\xad\x14\x09\xa6\xcf\x00\xa2\xf8\xe2\x32\xa3\x28\xa2\xc5\x59\x5c\xd5\x25\x73\x2c\x44\xbd\x07\xd0\x92\xfa\xfc\xea\xe2\xe7\xaf\xaf\xd7\x3a\x00\x52\x74\x89\x95\xa5\xe7\xc3\xe8\x31\x04\xd2\x81\x9f\x23\x54\x5a\x7a\x30\x19\x14\x95\xf2\xd2\xa3\x16\x3a\x59\x41\x66\x2c\xbc\x7f\xfb\x0e\x0a\xa1\x45\x8e\x69\x47\xd4\x70\xe1\xe9\xec\x9d\xb7\x42\xea\xb0\x82\xd4\xce\x0b\xa5\xf8\x78\x69\xa5\x66\x30\x48\x0d\xd2\xbb\x70\x22\xc4\x1b\x78\x03\x02\xe8\x18\x65\x26\x31\x05\x87\xbc\xb5\x17\x36\x47\xdf\x0e\x73\xe3\x0e\x07\x7e\x45\xe2\x31\xb3\xbf\x62\xe2\x3b\xcd\x16\xff\x56\x49\x8b\x69\x97\x59\x12\x55\xad\xb4\x9d\xe6\xd2\x12\x45\xbe\xa3\x05\xe1\xeb\x98\x48\xaf\x7d\x4d\x6a\xcf\x49\xb4\x61\x1c\xa4\x64\x1d\x18\xd8\x8e\x87\x44\x6c\xb0\xd8\x99\x93\xb9\x74\x60\xb1\xb4\xe8\x50\xfb\x46\x22\x42\x47\x06\xc6\x70\x8d\x96\x26\x92\xae\x54\x2a\x25\x51\x2e\xd0\x7a\xb0\x98\x98\x5c\xcb\xbf\x37\xab\x39\x92\x15\x6d\xa3\x84\x47\xe7\x41\x6a\x8f\x56\x0b\x05\x0b\xa1\x2a\x1c\x82\xd0\x29\x14\x62\x05\x16\x69\x5d\xa8\x74\x67\x05\x1e\xe2\xc6\xf0\xce\x58\x3a\x9d\xcc\x4c\x61\xee\x7d\xe9\xa6\x93\x49\x2e\x7d\x0d\x00\x89\x29\x0a\x3a\xfc\xd5\x84\x6d\x59\xce\x2a\x3a\xb3\x49\x8a\x0b\x54\x13\x27\xf3\x91\xb0\xc9\x5c\x7a\x4c\x7c\x65\x71\x22\x4a\x39\x62\x62\x35\x83\xc0\xb8\x48\xff\x64\x23\x64\xb8\xe7\x6b\xe2\x0b\x47\xe6\xbc\x95\x3a\xef\x75\xb1\xcd\xed\x95\x35\x59\x1e\x69\xa6\x88\xd3\x03\x2f\xad\x48\xa9\x89\xa4\xf2\xe1\x87\xeb\x1b\xa8\x09\x08\x62\x0f\x12\x6e\x87\xba\x56\xd8\x24\x28\xa9\x33\xb4\x61\x64\x66\x4d\xc1\xab\xa0\x4e\x4b\x23\xb5\xe7\x1f\x89\x92\xa8\x3d\xb8\x6a\x56\x90\xd2\x92\x82\xa1\xf3\x74\x0e\x63\x78\xc5\xf8\x07\x33\x84\xaa\x4c\x85\xc7\x74\x0c\x17\x1a\x5e\x89\x02\xd5\x2b\xe1\xf0\x8b\x8b\x9a\x24\xea\x46\x24\xbe\xc3\x85\xdd\x85\xef\xcd\x09\x1b\x06\x05\x50\xc3\xeb\xce\xd3\xe9\xe1\xc7\x75\x89\x49\x8d\x21\x34\x93\x31\x43\xe8\x35\x90\xa9\x8f\x68\x7c\x28\x11\xb4\x65\x26\x2a\xe5\xd7\x29\x01\xa8\xca\xdc\x8a\x14\xaf\xbd\x25\x58\x5f\x4d\xe1\x75\x18\xb9\x36\x70\x97\xb9\x33\x8b\xa8\x30\xf1\xc6\x6e\xf6\xac\xb1\x7a\x1d\x07\xc6\x19\x81\xcd\x1e\x6b\xcf\xdd\x7e\xdc\x3a\x80\xd3\xc7\xa8\xa5\xaf\x10\x3e\x99\xff\xf0\x40\x3a\xdd\x71\x09\x8f\x50\xbf\x3e\x29\x58\x14\x79\x36\x42\x23\x25\x66\xa8\x1a\x51\xd4\x48\x5a\x04\x93\xb9\x99\x63\xaf\x05\x84\x45\x38\xbf\x7c\x8d\xe9\x36\xe6\x5a\x06\x85\xb5\x62\xb5\x63\x84\xf4\x58\xec\x24\x7c\x8d\xf4\xf3\x3d\xe4\x45\x60\xa8\x7b\xfc\x5c\xb0\x2f\xf2\xec\x89\x02\xe8\x0d\x41\xc0\x3d\xae\x02\x3e\x12\xec\xc6\x23\x0b\x83\x2d\x32\x9a\xf2\x61\xde\xe3\x8a\x07\x45\xb0\xdc\x49\xdd\x23\xe7\x17\xbe\xed\xde\xa8\xff\x8d\x68\xcb\xbd\xfd\x35\xb1\x3b\x07\x3d\xa6\x2c\xe1\xbb\xc7\xd5\xbe\xee\x35\x81\x93\x1c\xa2\x19\x07\xc9\x53\x03\x4b\x8b\x2d\xbb\x16\xb6\x28\x4b\x25\x91\xd1\x70\xef\xda\x3b\xe1\xa8\xff\xd5\xac\x3e\x81\xd0\xe6\x28\x5b\x84\x0f\x87\xfd\xdc\x85\x83\x25\x4d\x9f\xcb\x32\x06\x19\x21\xb4\xa8\x5d\xe1\xcf\x42\xc9\x4e\x18\xc3\x5a\x7d\xa1\x87\x70\x69\x3c\xfd\xf9\xe1\x41\x12\xd4\x93\x3e\xbc\x36\xe8\x2e\x8d\xe7\x96\xcf\xc2\x6a\x20\xe1\x09\x8c\x86\x09\xac\xec\x3a\xd8\x15\x71\xd2\xf5\x87\x14\x86\x65\x7c\x3e\x8d\x50\xa4\x23\x8f\x64\x6c\xcd\x11\x47\x28\x61\xa1\xb0\x44\x51\x39\x76\x60\xda\xe8\x11\x16\xa5\x5f\x6d\x5d\x23\x0a\xc2\xd8\x9e\x1c\xf6\x2c\x17\x97\xba\x21\xbf\x1a\x7a\x42\x04\xa4\x28\x94\x85\xb4\x62\xa2\xd9\x9b\x13\x68\xcb\x04\x0a\xb4\x39\x42\x49\x08\x75\x88\x78\xf7\xe1\x4a\xf8\x1e\x41\x97\x03\xcf\x8a\x21\xf3\x2d\x19\xc0\x13\x20\x36\x8c\x0f\xb0\x54\x88\x92\x8e\xe9\x17\x42\x1f\x96\xd4\xaf\x50\x0a\x49\x11\xf3\x39\x47\xff\x0a\x7b\x7d\x52\xb3\x4c\xbb\xcb\xd0\x0a\xd2\x01\x41\xc9\x42\x28\xc2\x3b\xd2\x64\x0d\xa8\x02\xfa\x51\x90\xbe\x06\xec\x43\x58\xce\x8d\x0b\x60\x96\x49\x54\x1c\x3b\x0d\xee\x71\x35\x18\x6e\x1c\xed\xe0\x42\x0f\x02\x2e\x6e\x1c\x66\x03\xa2\x46\xab\x15\x0c\xb8\x6f\xf0\xdb\x7d\xc1\x5e\xb0\x14\x69\xca\xe9\xa5\x50\x57\x07\xa0\xd9\xde\x73\x73\x68\x17\x32\xc1\xf3\x24\x31\x95\xe6\xc4\xeb\x00\xbf\xbe\x3e\xa5\x06\x3f\x91\x16\x52\xf7\x72\x13\x1e\x09\x22\x0c\x85\xe5\x5c\x26\x73\x58\x4a\xa5\x38\x0c\x74\x98\xd2\xf1\xa4\x58\x2a\xb3\x6a\xe4\x7c\xe2\x4e\xc3\xc9\x52\x3c\x5a\xcb\x9e\x33\xbd\xdd\xa1\xc1\x2e\xe6\x28\x7d\x48\xae\xac\x59\xc8\x14\xd3\xf3\xab\x8b\xad\x52\xea\x33\xc7\x53\xc0\xa3\x52\x8e\xd3\x37\x8a\x59\xbd\x89\x31\xeb\xd6\x10\xa6\xec\xac\xdf\x49\xf2\x77\x12\x3b\x33\x46\xa1\xd8\xec\x0f\xa1\x50\x93\xc4\x3e\x4e\xeb\xcd\xda\x84\x08\x77\xf8\x50\x2a\x99\x48\x5f\xe3\x77\x1b\x5b\x71\x3e\xc4\x93\x18\xb8\x24\x47\x03\x0e\xfd\xb0\x8d\xd5\xa4\x03\x99\x6b\x63\xb7\xeb\xe7\x7e\x3c\xd9\x83\x22\x8f\x60\xc7\xc3\xe8\xbe\x9a\xa1\xd5\xe8\xd1\x8d\x28\xc6\x1a\xc5\x09\xb8\x69\x02\xeb\x21\xec\x63\x52\x1a\x7c\xec\x4f\xe8\x25\xa0\x71\xb1\x1a\x5b\x43\xd6\xde\x4b\xbe\x69\x54\x23\x41\xb6\x67\x8b\x6c\xc4\x49\x65\x2d\x6a\xaf\x56\xe0\x97\x06\x5c\x55\x96\xc6\x7a\x4c\xd7\x97\x24\xd3\x84\x5b\x5d\x07\xda\x53\x56\x2a\x36\x01\x06\x0a\xa1\x94\x59\x42\xa2\x2a\xe7\xd1\x46\xcb\x8a\x99\x32\x1f\x57\x61\x16\x58\xa7\xb1\xc1\x25\x90\x33\x28\xe7\xc2\x61\x9b\x83\xb9\x2a\x49\x10\x53\x4c\x43\x47\x74\x25\x98\x65\x98\x78\xb9\x40\xb5\x82\x02\x05\x57\x1a\x84\x6f\xf7\x27\xcd\x0e\xdb\xb7\x0c\xaf\xed\xa8\xf1\xc1\xd7\x49\x3a\x48\x4e\xc2\xfb\x95\x0a\xdb\xb0\x3b\x17\x0e\x32\x21\x15\xe5\x75\xb7\x1a\x3e\x6a\x27\x32\x7c\x23\xa4\x7a\x63\xec\x52\xd8\xb4\xc3\xf8\x97\xe0\x99\x48\x69\xfa\x02\x1d\xb5\x30\xce\x1b\xb4\x54\xab\x61\x4b\x45\x8e\x9a\xb8\x26\x26\x97\x35\x57\x57\x8a\xc4\xb4\x9c\xa3\x26\x7f\x5b\xcd\x1a\x35\x02\x8b\x19\x5a\xd4\x64\x44\xa2\x5e\xbf\x33\xa9\xf1\x09\x89\xf0\x42\x99\x9c\xc5\x31\x43\xd4\x75\xb2\x0b\x4b\xe9\xe7\x20\x78\xb3\x5a\x64\x19\xc7\xd4\x08\x48\xf1\x01\xb1\x18\x0d\xb6\x53\x29\xba\xd5\xf0\xdf\xe7\x1f\x2e\x2f\x2e\x7f\x9c\xb2\x2b\xd9\x10\xeb\xa6\x06\x4b\x07\x15\x8f\xea\xd4\x37\x5c\xa5\x3c\x29\x73\xa5\xf1\xa1\xc4\x84\xe8\x99\xe1\x5c\x2c\x24\x69\xbb\x8d\x95\x8f\x05\x5a\x31\x53\x08\x94\xf0\x82\x32\x8e\xd6\x51\xe8\x1c\xac\x4c\x05\x73\xb1\x40\x48\x11\x4b\xa8\x74\x8a\xd6\x79\xa1\x53\x22\xd9\x64\x31\xc6\xed\x53\x0e\x33\xa4\xde\xba\xf6\xb5\x69\x47\xfd\x3c\xd8\x0b\x5f\xb9\x26\x13\x0e\xbf\xb6\xe5\xc2\x75\x85\x75\x3c\x78\xaa\x2b\x68\x73\xe2\x1d\x29\x2f\x7d\xa8\xab\x62\x3b\x7e\x8d\xf6\xcc\xa2\xde\x8d\x73\xe9\x57\x05\x98\xa3\x83\x8b\x08\xfb\x72\xa1\x11\x28\xe1\xfc\xc7\xa0\x54\x4f\xc8\xda\x13\xa3\x83\x15\x3c\xee\x56\x5e\x35\x43\xd7\xe3\xe7\x6d\xde\xaf\x5d\xf8\xb3\x3a\x8c\x3e\x84\x37\x24\xb5\x61\x56\x8a\x5e\x48\x15\xd4\xc4\x68\x04\x41\x61\x87\xaf\xa9\x8c\xe0\xcc\x92\xc7\xa6\xaa\x78\x7e\x75\x01\x8d\x0a\xc1\x68\x34\x0a\x40\xe9\xbc\xad\x12\xf6\x85\x52\x7b\xd4\x84\x29\xb4\x6a\x2a\x2d\x97\x05\x1d\x2d\xde\xca\x21\x66\x75\x21\x54\x2c\x85\x9f\xc3\x38\x9c\xef\xb8\x23\x0a\x80\x37\xc6\x02\x3e\x88\xa2\x54\x38\x64\x31\xc0\x1b\x63\xa2\xa2\x87\x0d\x7f\x81\xc9\x04\x3e\xb4\x89\x18\x07\x9b\x33\x8a\x99\x42\x1e\xc6\x55\x4f\xc8\x8c\x21\x29\x77\xf9\x19\xd3\xc4\x9f\xb4\x59\xea\x6d\x5b\xf3\x5e\xc2\xe2\x14\x6e\x07\xe7\x0b\x21\x15\x19\xf5\xed\x60\x08\xb7\x83\x2b\x6b\x72\x0e\x7b\x75\x7e\x1b\xe3\xd8\xdb\xc1\x6b\x64\x00\x49\x6f\x07\xb4\xec\xbf\x73\x56\xf1\x8e\x12\x8c\x9f\x70\xf5\x1d\x2f\xd6\x34\xd7\x2e\xf4\xbb\x90\x80\x50\x3b\x39\xeb\x9b\x55\x89\xdf\x51\xe4\x5d\x37\xbc\x13\x65\x33\xb9\xa3\x4d\x9f\xee\x0a\xf4\x62\x71\x36\x6e\x8f\xf3\x2f\x7f\x75\x46\x4f\x6f\x07\x2d\xfd\x43\x53\x90\x5a\x94\x7e\x75\x3b\x80\xde\xae\xd3\xdb\x01\xef\x5b\xb7\xd7\x44\x4e\x6f\x07\xb4\x13\x35\x5b\xe3\xcd\xac\xca\xa6\xb7\x83\xd9\xca\xa3\x1b\x9e\x0d\x2d\x96\x43\x82\x9d\xef\xda\x1d\x6e\x07\x7f\x21\x5c\x9d\x4c\xc0\xf8\x39\xda\x70\x92\x0e\x7e\xdd\x86\x29\x07\x84\xe3\x8f\xd5\x2d\x82\xc5\xde\x58\xa1\x9d\xac\x6f\x6f\x76\x0e\x2d\xd0\x39\x91\xef\xee\xb7\x28\xdc\xd6\xd0\x32\x74\x07\x6d\xd8\xd9\x4d\xbc\x6c\xed\x7c\xbc\x28\xb2\xc9\xc3\x81\xc5\xa8\xcd\x89\x6d\xa9\xc4\x79\xf0\xd4\xc0\x16\xdb\xe8\x84\x6f\x46\x93\x21\x92\x4f\x27\xfb\x8e\x5e\x81\xd3\x39\x3e\xb7\x18\xe5\xc4\x4b\x80\x19\x06\xb7\x1d\xae\x63\x52\xb4\x6a\x45\x0e\xa8\x5d\x35\x99\x0b\x9d\x53\x70\x12\x52\x76\xc1\xf6\x4e\x21\xd0\x3d\x19\x12\xa7\x7a\x1a\x2a\x57\x17\xc7\x99\xae\x66\x45\x02\x8e\x60\xf0\x71\x19\x46\xc6\x24\xc1\xd2\x93\x75\x3d\x56\xf9\x7a\xa4\xbe\x91\x19\x5b\x08\x3f\x25\xc7\x8b\x23\xbf\x5b\x3d\xa2\x72\x1c\x28\xf8\x38\x3a\x64\xd6\xf3\xaa\x10\x14\xc4\x88\x94\x5d\x7c\xd3\xa7\x53\x99\x08\x8e\x3d\x6a\x3c\x15\x33\x53\x05\x84\x6b\xcf\x21\x8a\x9a\x62\x89\x19\x72\x8a\x41\xf6\x19\xd9\xfa\x9d\xcc\x17\xe2\xe1\x2d\xea\xdc\xcf\xa7\xf0\xf5\xcb\xff\xfc\xe6\xdb\x1d\x03\x03\x30\x62\xfa\x63\x88\xda\xb6\x5c\x38\xed\x10\xc3\xe6\xc4\x6e\xf1\x8b\xf8\x1c\xd7\x55\xfe\x71\xde\x8e\x69\xaa\x77\xad\x06\x2d\x05\x27\x4b\x30\x13\x8e\xc3\x7c\x92\x0b\xa1\x3c\x87\x81\x3a\xc1\x21\x45\xc8\x5b\x17\x93\xae\x93\x2d\x9c\xbd\x1c\xc2\x2c\x8a\x78\x13\xbe\x3f\x3d\xdc\x8d\xb7\x90\x2c\x1d\xfc\x79\xb8\x46\x0f\xe5\xc7\x15\x7b\x3c\x4e\x4d\x39\xc0\xb4\x18\xdc\x60\x8c\x9e\xb7\xb8\x41\x6c\xe8\x7d\xec\xe0\xc8\x19\xe6\xb8\xbb\x92\x5a\xab\xad\xd4\xfe\x9b\xff\xd8\x7d\xbe\x52\xcb\xa2\x2a\xa6\xf0\x62\xc7\x90\x00\x69\x07\x9e\x66\x18\xdc\x46\x01\x82\xa0\x2b\xb7\xa2\x28\x38\x6d\x97\x29\x6a\x2f\x33\x89\xb6\xab\xda\x21\x8f\xe0\x89\x75\xc8\xdd\x48\xf1\xb9\x8b\x38\xd4\x51\xf6\x2b\x6b\xd2\x2a\x41\xcb\x1e\x38\x56\x33\x92\x2e\x40\xad\x4a\x0c\xd6\x10\x52\x49\x68\x82\xea\xba\x22\x44\x81\x37\x0a\x2d\x75\xee\xe2\x96\xd2\x05\x00\x09\x5e\x77\x39\x47\x76\x3d\xbd\x2a\x12\x53\xe5\x64\x8a\x16\x53\x10\x90\x57\xc2\x0a\xed\x11\x53\x82\x9f\x50\x49\x0a\x37\x79\x2d\xe4\x89\xf6\xfe\xac\xb6\xc6\x60\xaa\x01\xac\x88\xc4\x78\xe7\x16\x6a\x8c\x9f\xcd\x54\xcf\x5e\xbc\xdc\x7b\xe4\xcd\xb8\xdd\x75\x78\xe1\x3d\x5a\x3d\x85\xff\xfd\x74\x3e\xfa\x1f\x31\xfa\xfb\xdd\x49\xfc\xe7\xc5\xe8\xcf\xff\x37\x9c\xde\x7d\xd5\xf9\x79\x77\xfa\xfd\xbf\xed\x58\x69\x7b\x6c\xbd\x43\x7d\xa2\x13\xa9\x83\xc4\xfa\x44\x87\xec\x61\x4c\x06\x37\xb6\xc2\x21\xbc\x11\xca\xe1\x10\x3e\x6a\x76\x0d\xbf\x53\x68\xbb\x73\x8a\xf0\x8d\x60\x40\xbb\x6e\x0f\x3e\x9a\x21\x4c\xd2\xfe\x31\x91\xdc\x7d\x55\xc5\xc3\x84\xc4\x61\x9b\xc9\xba\x48\xd3\xb9\xa7\x05\x46\x3c\x0a\x4b\xc7\x31\xbc\x1d\x27\xa6\x98\x74\xee\x71\x29\xae\x7e\x27\xf4\x0a\x5a\x58\x0b\x41\xe9\xba\xa6\x3b\x4f\xd8\x24\x12\x4b\xb9\x66\x73\x13\x0e\x4a\xde\x23\x34\x91\x6b\x00\xcb\x19\x26\x82\x03\x71\x3b\x93\xde\x0a\xbb\xea\xe4\x1d\x90\x08\x1d\xeb\x89\x59\xa5\xe0\xc4\x21\xc2\x58\x9b\x14\x37\xd1\xf5\x34\x60\xa8\x98\x49\x25\xfd\x2a\x14\x1f\x13\xa3\x33\x25\x63\xfc\x5f\x94\xc6\x7a\xa1\x7d\x5d\xb8\xcd\xf1\x01\xa4\x0f\x35\xe3\x50\x60\x3b\x49\xb5\x3b\x3b\x7b\xf9\xf5\x75\x35\x4b\x4d\x21\xa4\x7e\x53\xf8\xc9\xe9\xf7\x27\x7f\xab\x84\xe2\xaa\xe7\xa5\x28\xf0\x4d\xe1\x4f\x3f\x9f\x5b\x3c\xfb\xe6\x00\x2b\x3a\xf9\x14\x6c\xe5\xee\xe4\xd3\x28\xfe\xf7\x55\xdd\x74\xfa\xfd\xc9\xed\x78\x6f\xff\xe9\x57\xc4\x43\xc7\x02\xef\x3e\x8d\x5a\xf3\x1b\xdf\x7d\x75\xfa\x7d\xa7\xef\x74\xd3\x18\x3b\x59\xe9\xa3\x09\xe6\xdb\x76\x6c\x88\x4e\x7c\xfd\xa0\xa9\xb6\xcc\x7e\x68\xb8\x9e\x72\x46\x2b\x26\x7f\x1c\x97\x79\x72\x65\xf8\x90\xa0\x4b\x1f\x5e\x89\xed\xd7\x60\x3b\x05\x91\x8d\xeb\xed\xc6\x03\xf5\x98\xfa\x57\xad\xb5\xf6\x6f\x07\x3e\x60\xf6\xc4\xcb\x81\x0f\x98\x75\x2b\x67\x41\x30\xfd\x3b\x81\xf8\xe4\xa4\xb9\x34\xf8\x02\xf7\xff\xbb\x1f\x29\x6d\x65\x81\x82\xfd\xba\xe6\x19\xf5\x31\xf2\xb0\xf3\x32\xf3\x51\x93\x66\x7f\x7c\x25\xfc\xfc\x20\x0a\x9e\x5f\x44\xb1\xf1\xcd\x1f\xdf\xc5\x96\x12\x13\xec\xbd\x83\xe2\x38\x0e\x45\x1a\x1b\x29\xf0\xb1\x18\xfb\x86\x21\xe2\x88\xf7\x9d\xed\x3b\x29\x0a\x9a\x40\x10\x10\xcb\x14\xfe\xeb\xfa\xfd\xe5\xe4\x47\x13\x63\x05\xca\x66\x5c\xb0\x2d\xbe\xa9\x1a\x82\xab\x92\x39\x08\x47\xa4\x51\x7e\x7b\xcd\xa5\x87\x42\x68\x99\xa1\xf3\xe3\xb8\x1a\x5a\xf7\xe9\xe5\xdd\xb8\x5f\xee\x90\xf1\x52\xb4\x7e\x4d\x14\x15\x80\x6d\x83\x98\x69\xe6\x72\xd0\xca\x24\x95\x26\x8d\x44\x2f\x99\x58\x2f\xee\x11\x4c\x24\xb6\x42\x76\x0a\x53\x18\x90\x9a\x74\xb6\xfe\x85\x0c\xeb\xd7\x01\x9c\x2c\xb9\x2c\x3f\xa0\x9f\x83\xb0\x61\xf3\xf8\x8b\xda\x3a\x1e\x3f\x6e\x1c\xe2\x7b\x2b\xf3\x9c\xc3\x2d\x2e\xc3\x2e\x50\xfb\x53\xf6\x6f\x19\x68\xd3\x19\xac\xe3\x1d\x57\x7b\xb3\xb5\x4e\xc8\xa7\x97\x77\x03\x38\xe9\xf3\x45\x21\x28\x3e\xc0\xcb\xe6\x36\xab\x34\xe9\x69\x9d\xb5\xae\xb4\x17\x0f\x9c\x18\xcc\x8d\x43\x1d\x2e\x03\xbc\x09\x75\x56\x67\x28\xf9\x44\xa5\x46\x21\xc0\x4c\x61\x19\x0a\x70\xb5\x28\xc3\x85\x70\x29\xac\x5f\x7b\x1a\x77\xf3\xfe\xf5\xfb\x69\xd8\x8d\x8e\x2d\xd7\x75\x96\x9b\x49\x2d\x54\xac\x52\x37\xf1\x21\x11\x52\x85\x43\xf2\x26\xa6\xb6\x75\xad\x36\xab\x7c\x65\x71\xbc\xfe\x54\xea\x60\x8d\xdf\xf6\x4e\x6d\xbb\xb2\xf3\x7b\xb5\x75\x43\xfb\x27\xbe\x06\x3b\x98\x45\xbd\xe3\xb6\x74\x93\xc5\xcb\x8e\x0e\xee\x65\xb1\x85\x66\xe2\x32\x35\x89\x23\x06\x13\x2c\xbd\x9b\x98\x05\x41\x27\x2e\x27\x4b\x63\xef\xa5\xce\x47\xa4\x64\xa3\x70\xf2\x6e\xc2\x2e\x66\xf2\x27\xfe\xf3\xbb\x38\x62\x3f\x75\x38\x5b\xe1\x51\xea\x3f\x80\x37\x76\x9f\x93\xdf\xcc\x5a\x1d\x5f\x3e\xc5\x13\x3c\xbf\xae\x93\xbf\xb5\xd9\x64\x2e\xe1\x32\x3b\xbe\x56\xed\x20\x5c\x21\xd2\x00\x81\x42\xaf\xbe\xb8\x1a\x93\x00\x39\xc7\x4f\x56\xa3\xf8\x9c\x7c\x24\x74\x3a\x6a\xe2\xeb\x64\xf5\x9b\x25\x56\xc9\x03\x0d\xf8\xe3\xc5\xeb\x7f\x8c\x72\x57\xf2\x49\xd6\x1a\xaa\x28\x53\xf0\xb6\xaa\xa3\x3b\xe7\x8d\x15\x39\xf6\xdb\xaa\x59\x93\x7c\xb4\x0c\xc7\xbc\x12\x7e\xf9\x95\x9b\xda\x07\xe4\x42\x95\x73\xf1\xb2\x9e\x7b\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\xbe\x57\xd8\x7f\xd4\x67\xe4\xc7\x67\xe0\xc7\x67\xe0\xc7\x67\xe0\xbb\xbb\x8f\xcf\xc0\x8f\xcf\xc0\x8f\xcf\xc0\xd7\xbf\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\x2d\xdf\xce\x63\xda\x7e\x8b\xbb\x27\xe4\x7d\xf2\x8b\xd1\xc3\xa3\xde\xcf\xff\xf8\xf2\x78\x39\xf6\xc7\xb8\x1c\x3b\x5e\x77\x1d\xaf\xbb\x8e\xd7\x5d\xc7\xeb\xae\xdf\xa0\xf1\xc7\xeb\xae\xe3\x75\xd7\xf1\xba\xeb\x78\xdd\xf5\x2f\x7a\xdd\x95\x09\xe5\x0e\xbe\xef\xfa\xff\x00\x00\x00\xff\xff\xf3\xee\x0f\x50\xf8\x4a\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/staging/api/pkg/operators/v1/operatorgroup_test.go b/staging/api/pkg/operators/v1/operatorgroup_test.go new file mode 100644 index 0000000000..ee5fb15180 --- /dev/null +++ b/staging/api/pkg/operators/v1/operatorgroup_test.go @@ -0,0 +1,61 @@ +package v1 + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestUpgradeStrategy(t *testing.T) { + tests := []struct { + description string + og *OperatorGroup + expected string + }{ + { + description: "NoSpec", + og: &OperatorGroup{}, + expected: DefaultUpgradeStrategy, + }, + { + description: "NoUpgradeStrategy", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{}, + }, + expected: DefaultUpgradeStrategy, + }, + { + description: "NoUpgradeStrategyName", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{ + UpgradeStrategy: "", + }, + }, + expected: DefaultUpgradeStrategy, + }, + { + description: "NonSupportedUpgradeStrategyName", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{ + UpgradeStrategy: "foo", + }, + }, + expected: DefaultUpgradeStrategy, + }, + { + description: "UnsafeFailForwardUpgradeStrategyName", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{ + UpgradeStrategy: "UnsafeFailForward", + }, + }, + expected: UnsafeFailForwardUpgradeStrategy, + }, + } + + for _, tt := range tests { + t.Run(tt.description, func(t *testing.T) { + require.EqualValues(t, tt.expected, tt.og.UpgradeStrategy()) + }) + } +} diff --git a/staging/api/pkg/operators/v1/operatorgroup_types.go b/staging/api/pkg/operators/v1/operatorgroup_types.go index 1706eb17e4..cd9a8afdb6 100644 --- a/staging/api/pkg/operators/v1/operatorgroup_types.go +++ b/staging/api/pkg/operators/v1/operatorgroup_types.go @@ -45,9 +45,32 @@ type OperatorGroupSpec struct { // Static tells OLM not to update the OperatorGroup's providedAPIs annotation // +optional StaticProvidedAPIs bool `json:"staticProvidedAPIs,omitempty"` + + // UpgradeStrategy defines the upgrade strategy for operators in the namespace. + // There are currently two supported upgrade strategies: + // + // Default: OLM will only allow clusterServiceVersions to move to the replacing + // phase from the succeeded phase. This effectively means that OLM will not + // allow operators to move to the next version if an installation or upgrade + // has failed. + // + // UnsafeFailForward: OLM will allow clusterServiceVersions to move to the + // replacing phase from the succeeded phase or from the failed phase. + // Additionally, OLM will generate new installPlans when a subscription references + // a failed installPlan and the catalog has been updated with a new upgrade for + // the existing set of operators. + // + // WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result + // in unexpected behavior or unrecoverable data loss unless you have deep + // understanding of the set of operators being managed in the namespace. + // OperatorGroupStatus is the status for an OperatorGroupResource. + // + // +kubebuilder:validation:Enum=Default;TechPreviewUnsafeFailForward + // +kubebuilder:default=Default + // +optional + UpgradeStrategy string `json:"upgradeStrategy,omitempty"` } -// OperatorGroupStatus is the status for an OperatorGroupResource. type OperatorGroupStatus struct { // Namespaces is the set of target namespaces for the OperatorGroup. // +listType=set @@ -76,6 +99,7 @@ type OperatorGroup struct { metav1.ObjectMeta `json:"metadata"` // +optional + // +kubebuilder:default={upgradeStrategy:Default} Spec OperatorGroupSpec `json:"spec"` Status OperatorGroupStatus `json:"status,omitempty"` } @@ -90,6 +114,11 @@ type OperatorGroupList struct { Items []OperatorGroup `json:"items"` } +const ( + DefaultUpgradeStrategy = "Default" + UnsafeFailForwardUpgradeStrategy = "UnsafeFailForward" +) + // BuildTargetNamespaces returns the set of target namespaces as a sorted, comma-delimited string func (o *OperatorGroup) BuildTargetNamespaces() string { ns := make([]string, len(o.Status.Namespaces)) @@ -98,6 +127,17 @@ func (o *OperatorGroup) BuildTargetNamespaces() string { return strings.Join(ns, ",") } +// IsServiceAccountSpecified returns true if the spec has a service account name specified. +func (o *OperatorGroup) UpgradeStrategy() string { + strategyName := o.Spec.UpgradeStrategy + switch { + case strategyName == UnsafeFailForwardUpgradeStrategy: + return strategyName + default: + return DefaultUpgradeStrategy + } +} + // IsServiceAccountSpecified returns true if the spec has a service account name specified. func (o *OperatorGroup) IsServiceAccountSpecified() bool { if o.Spec.ServiceAccountName == "" { diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go index 7efa2746d6..384260d6f5 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go @@ -1209,6 +1209,8 @@ func (a *Operator) syncClusterServiceVersion(obj interface{}) (syncError error) return } + a.logger.Infof("FailForwardStrategy == %v", operatorsv1.UnsafeFailForwardUpgradeStrategy) + if len(operatorGroup.Status.Namespaces) == 1 && operatorGroup.Status.Namespaces[0] == operatorGroup.GetNamespace() { logger.Debug("skipping copy for OwnNamespace operatorgroup") return diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml index 56ef0b5c4f..d63a7b78c5 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml @@ -37,6 +37,8 @@ spec: spec: description: OperatorGroupSpec is the spec for an OperatorGroup resource. type: object + default: + upgradeStrategy: Default properties: selector: description: Selector selects the OperatorGroup's target namespaces. @@ -80,8 +82,14 @@ spec: items: type: string x-kubernetes-list-type: set + upgradeStrategy: + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace. OperatorGroupStatus is the status for an OperatorGroupResource." + type: string + default: Default + enum: + - Default + - UnsafeFailForward status: - description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object required: - lastUpdated diff --git a/vendor/github.com/operator-framework/api/crds/zz_defs.go b/vendor/github.com/operator-framework/api/crds/zz_defs.go index 31a7d8bb5e..22bfcf53ff 100644 --- a/vendor/github.com/operator-framework/api/crds/zz_defs.go +++ b/vendor/github.com/operator-framework/api/crds/zz_defs.go @@ -185,7 +185,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x94\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\xa2\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x6e\x39\x49\xbb\xdd\x85\xfc\x25\xd1\xf0\x7a\xe7\xef\x1d\xa4\x28\xe5\xaf\x68\x9d\x34\x7a\x04\xa2\x94\xf8\xe0\x51\xd3\x2f\x97\xdc\x7e\xef\x12\x69\x86\x77\xc7\x07\xb7\x52\x67\x23\x78\x59\x39\x6f\x8a\x0f\xe8\x4c\x65\x53\x7c\x85\x13\xa9\xa5\x97\x46\x1f\x14\xe8\x45\x26\xbc\x18\x1d\x00\x08\xad\x8d\x17\xf4\xd9\xd1\x4f\x80\xd4\x68\x6f\x8d\x52\x68\x07\x39\xea\xe4\xb6\x1a\xe3\xb8\x92\x2a\x43\xcb\x9b\xd7\x47\xdf\x3d\x4b\xbe\x4f\x9e\x1d\x00\xa4\x16\x79\xf9\xa5\x2c\xd0\x79\x51\x94\x23\xd0\x95\x52\x07\x00\x5a\x14\x38\x02\x53\xa2\x15\xde\xd8\xdc\x9a\xaa\x74\x49\xfd\xd3\x25\xa9\xb1\x68\xe8\x9f\xe2\xc0\x95\x98\xd2\xe9\x3c\xa7\x5d\x32\x37\x27\xec\x57\x13\x29\x3c\xe6\xc6\xca\xfa\x37\xc0\x00\x8c\x2a\xf8\xff\x81\xf9\xf7\x71\x8f\x9f\x68\x4b\xfe\xae\xa4\xf3\x3f\x2f\x8f\xbd\x91\xce\xf3\x78\xa9\x2a\x2b\xd4\x22\xc1\x3c\xe4\xa6\xc6\xfa\x77\xed\xf1\x7c\x5c\x1e\x86\xa4\xce\x2b\x25\xec\xc2\xba\x03\x00\x97\x9a\x12\x47\xc0\xcb\x4a\x91\x62\x76\x00\x10\xc5\x17\xb7\x19\x44\x11\xdd\x1d\xc7\x5d\x5d\x3a\xc5\x42\xd4\x67\x00\x6d\xa9\x4f\xcf\xcf\x7e\xfd\xf6\x62\x61\x00\x20\x43\x97\x5a\x59\x7a\x56\xc6\x1c\x43\x20\x1d\xf8\x29\x42\xa5\xa5\x07\x33\x81\xa2\x52\x5e\x7a\xd4\x42\xa7\x33\x98\x18\x0b\xef\xdf\xbc\x85\x42\x68\x91\x63\xd6\x11\x35\x9c\x79\xd2\xbd\xf3\x56\x48\x1d\x76\x90\xda\x79\xa1\x14\xab\x97\x76\x6a\x26\x83\xd4\x20\xbd\x0b\x1a\x21\xde\xc0\x1b\x10\x40\x6a\x94\x13\x89\x19\x38\xe4\xa3\xbd\xb0\x39\xfa\x76\x9a\x4b\x3a\x1c\xf8\x19\x89\xc7\x8c\x7f\xc7\xd4\x77\x3e\x5b\xfc\xa3\x92\x16\xb3\x2e\xb3\x24\xaa\xda\x68\x3b\x9f\x4b\x4b\x14\xf9\x8e\x15\x84\xbf\x8e\x8b\xcc\x7d\x5f\x90\xda\x13\x12\x6d\x98\x07\x19\x79\x07\x06\xb6\xa3\x92\x88\x0d\x16\x3b\x73\x32\x95\x0e\x2c\x96\x16\x1d\x6a\xdf\x48\x44\xe8\xc8\x40\x02\x17\x68\x69\x21\xd9\x4a\xa5\x32\x12\xe5\x1d\x5a\x0f\x16\x53\x93\x6b\xf9\x67\xb3\x9b\x23\x59\xd1\x31\x4a\x78\x74\x1e\xa4\xf6\x68\xb5\x50\x70\x27\x54\x85\x7d\x10\x3a\x83\x42\xcc\xc0\x22\xed\x0b\x95\xee\xec\xc0\x53\x5c\x02\x6f\x8d\x25\xed\x4c\xcc\x08\xa6\xde\x97\x6e\x34\x1c\xe6\xd2\xd7\x00\x90\x9a\xa2\x20\xe5\xcf\x86\xec\xcb\x72\x5c\x91\xce\x86\x19\xde\xa1\x1a\x3a\x99\x0f\x84\x4d\xa7\xd2\x63\xea\x2b\x8b\x43\x51\xca\x01\x13\xab\x19\x04\x92\x22\xfb\xc6\x46\xc8\x70\x4f\x16\xc4\x17\x54\xe6\xbc\x95\x3a\x9f\x1b\x62\x9f\xdb\x28\x6b\xf2\x3c\xb2\x4c\x11\x97\x07\x5e\x5a\x91\xd2\x27\x92\xca\x87\x1f\x2f\x2e\xa1\x26\x20\x88\x3d\x48\xb8\x9d\xea\x5a\x61\x93\xa0\xa4\x9e\xa0\x0d\x33\x27\xd6\x14\xbc\x0b\xea\xac\x34\x52\x7b\xfe\x91\x2a\x89\xda\x83\xab\xc6\x05\x19\x2d\x19\x18\x3a\x4f\x7a\x48\xe0\x25\xe3\x1f\x8c\x11\xaa\x32\x13\x1e\xb3\x04\xce\x34\xbc\x14\x05\xaa\x97\xc2\xe1\x5f\x2e\x6a\x92\xa8\x1b\x90\xf8\x76\x17\x76\x17\xbe\x97\x17\x2c\x39\x14\x40\x0d\xaf\x6b\xb5\x33\x87\x1f\x17\x25\xa6\x35\x86\xd0\x4a\xc6\x0c\xa1\x17\x40\xa6\x56\x51\xb2\x2b\x11\xeb\xdd\x95\x49\x44\x85\xa9\x37\x76\x79\x64\x81\xd4\x8b\x38\x31\xae\x08\x64\xce\x91\xf6\xc4\x6d\xc6\x9d\x1d\x28\xdd\x46\x2d\x6b\x41\xf8\x74\xfa\xe3\x03\xd9\x64\x07\xd2\xb7\x50\xbf\xb8\x28\x78\x04\x45\x26\x42\x13\x25\xc6\xa8\x1a\x51\xd4\x48\x58\x04\x93\xbf\x9c\xe2\xdc\x17\x10\x16\xe1\xf4\xdd\x2b\xcc\x56\x31\xd7\x32\x28\xac\x15\xb3\x35\x33\xa4\xc7\x62\x2d\xe1\x0b\xa4\x9f\x6e\x20\x2f\x3a\x76\x3d\xe2\xa7\x82\x63\x89\xe7\x48\x12\x40\xab\x0f\x02\x6e\x71\x16\xf0\x8d\x60\x33\xaa\x2c\x4c\xb6\xc8\x68\xc8\xca\xbc\xc5\x19\x4f\x8a\x60\xb7\x96\xba\x2d\xfa\x0b\x7f\xab\xa3\xc9\xfc\xdf\x80\x8e\xdc\x38\x5e\x13\xbb\x76\xd2\x36\x63\x09\x7f\xb7\x38\xdb\x34\xbc\x20\x70\x92\x43\x74\xc3\x20\x79\xfa\xc0\xd2\x62\xcf\xac\x85\x2d\xca\x52\x49\x64\x34\xdb\xb8\xf7\x5a\x38\x99\xff\xab\x59\x7d\x04\xa1\x8d\x2a\x5b\x84\x0e\xca\x7e\xe2\x82\x62\xc9\xd2\xa7\xb2\x8c\x49\x42\x48\x0d\xea\x50\xf6\xab\x50\xb2\x93\x86\xb0\x55\x9f\xe9\x3e\xbc\x33\x9e\xfe\xf9\xf1\x41\x12\x54\x93\x3d\xbc\x32\xe8\xde\x19\xcf\x5f\xbe\x0a\xab\x81\x84\x47\x30\x1a\x16\xb0\xb1\xeb\xe0\x57\xc4\x49\x37\x9e\x51\x1a\x35\x61\xfd\x34\x42\x91\x8e\x22\x8a\xb1\x35\x47\x9c\x61\x84\x8d\xc2\x16\x45\xe5\x38\x00\x69\xa3\x07\x58\x94\x7e\xb6\x72\x8f\x28\x08\x63\xe7\xe4\xb0\x61\xbb\xb8\xd5\x25\xc5\xc5\x30\x12\x32\x18\x45\xa9\x28\x64\x15\x13\xcd\xd1\x98\x72\x69\x99\x42\x81\x36\x47\x28\x09\xa1\x76\x11\xef\x26\x5c\x09\x7f\x5b\xd0\x65\x47\x5d\x31\x64\xbe\x21\x07\x78\x04\xc4\x86\xf9\x01\x96\x0a\x51\x92\x9a\x3e\x12\xfa\xb0\xa4\x3e\x41\x29\x24\x65\xbc\xa7\x9c\xbd\x2b\x9c\x1b\x93\x9a\x65\xda\xdd\x86\x76\x90\x0e\x08\x4a\xee\x84\x22\xbc\x23\x4b\xd6\x80\x2a\xa0\x1f\x25\xd9\x0b\xc0\xde\x87\xfb\xa9\x71\x01\xcc\x26\x12\x15\xe7\x3e\xbd\x5b\x9c\xf5\xfa\x4b\xaa\xed\x9d\xe9\x5e\xc0\xc5\x25\x65\x36\x20\x6a\xb4\x9a\x41\x8f\xc7\x7a\x9f\x1f\x0b\x36\x82\xa5\xc8\x32\x2e\x0f\x85\x3a\xdf\x01\xcd\x36\xea\xcd\xa1\xbd\x93\x29\x9e\xa6\xa9\xa9\x34\x17\x4e\x3b\xc4\xf5\xc5\x25\x35\xf8\x89\xac\x90\x7a\xae\xb6\xe0\x99\x20\xc2\x54\xb8\x9f\xca\x74\x0a\xf7\x52\x29\x4e\xe3\x1c\x66\xa4\x9e\x0c\x4b\x65\x66\x8d\x9c\x0f\xdd\x51\xd0\x2c\xe5\x93\xb5\xec\xb9\x52\x5b\x9f\x1a\xac\x63\x8e\xd2\xff\xf4\xdc\x9a\x3b\x99\x61\x76\x7a\x7e\xb6\x52\x4a\xf3\xcc\xf1\x12\xf0\xa8\x94\xe3\xf2\x8b\x72\x4e\x6f\x62\xce\xb9\x32\x85\x29\x3b\xfb\x77\x8a\xf4\xb5\xc4\x8e\x8d\x51\x28\x96\xc7\x43\x2a\xd4\x14\xa1\xdb\x69\xbd\x5c\x58\x10\xe1\x0e\x1f\x4a\x25\x53\xe9\x6b\xfc\x6e\x73\x2b\xae\x67\x78\x11\x03\x97\xe4\x6c\xc0\xa1\xef\xb7\xb9\x9a\x74\x20\x73\x6d\xec\x6a\xfb\xdc\x8c\x27\x1b\x50\x64\x0b\x76\x3c\x0c\x6e\xab\x31\x5a\x8d\x1e\xdd\x80\x72\xac\x41\x5c\x80\x0b\xe9\xb1\x17\xbe\x5a\x3a\x62\x43\x82\xcc\xf3\x9b\x14\x39\xfc\x5a\x95\x24\x7f\x78\x7c\x8e\xbc\x3e\x5f\x19\x80\x12\xce\xff\x12\xaa\x94\x47\x64\xd6\xa9\xd1\xc1\xaf\xb7\xab\xfe\x65\x33\x75\x31\xc6\xad\xb2\xd0\x76\xe3\xaf\xaa\xd4\x39\x8a\x7a\x0d\x49\x2d\x14\x66\xe8\x85\x54\x41\xe2\x46\x23\x08\x82\x06\x5f\x53\x99\x56\xd6\x72\xb5\xe7\xc9\xb3\xea\xca\xfd\xf4\xfc\x0c\x1a\x6d\xc0\x60\x30\x08\x71\xd1\x79\x5b\xa5\x6c\xaf\x54\x85\xeb\x0c\x33\xde\x35\x93\x96\x4b\x6f\x47\x9b\xb7\x72\x88\x99\x57\x80\xf3\x52\xf8\x29\x24\x41\xf9\x49\x47\x14\x00\xaf\x8d\x05\x7c\x10\x45\xa9\xb0\xcf\x62\x80\xd7\xc6\x44\x9b\x09\x07\x7e\x84\xe1\x10\x3e\xb4\xc9\x12\x07\x84\x31\xe1\x5a\xc8\x95\xb8\xb3\x00\x13\x63\x48\xca\x5d\x7e\x12\x5a\xf8\xb3\x36\xf7\x7a\xd5\xd1\x7c\x96\xb0\x38\x82\xeb\xde\xe9\x9d\x90\x4a\x8c\x15\x5e\xf7\xfa\x70\xdd\x3b\xb7\x26\xe7\xd0\xa4\xf3\xeb\x18\x6b\xae\x7b\xaf\x30\xb7\x22\xc3\xec\xba\x47\xdb\xfe\x2b\x47\xfe\xb7\x94\x04\xfc\x8c\xb3\xe7\xbc\x59\xf3\xf9\x22\x64\x09\xb3\xe7\x21\x49\xa0\xef\xe4\x50\x97\xb3\x12\x9f\x53\x74\xac\x3f\xbc\x15\x65\xb3\xb8\x63\x4d\x57\x37\x54\xb3\xde\x1d\x27\xad\x3a\x7f\xfb\xdd\x19\x3d\xba\xee\xb5\xf4\xf7\x4d\x41\x66\x51\xfa\xd9\x75\x0f\xe6\x4e\x1d\x5d\xf7\xf8\xdc\xfa\x7b\x4d\xe4\xe8\xba\x47\x27\xd1\x67\x6b\xbc\x19\x57\x93\xd1\x75\x6f\x3c\xf3\xe8\xfa\xc7\x7d\x8b\x65\x9f\x40\xea\x79\x7b\xc2\x75\xef\x37\xb8\xd6\x44\xac\xf1\x53\xb4\x41\x93\x0e\x3e\xf5\x36\xa0\xcb\x86\x90\xb9\xad\xb6\x08\x1e\x7b\x69\x85\x76\xb2\xee\x90\xae\x9d\x5a\xa0\x73\x22\x5f\x3f\x6e\x51\xb8\x95\xf0\x1f\x86\x83\x35\xac\x1d\x26\x5e\x56\x0e\x6e\x2f\x5c\x96\x79\xd8\xb1\x60\x5c\x5e\xd8\x96\x33\xce\x83\xa7\x0f\xec\xb1\x8d\x4d\xf8\x66\x36\x39\xa2\x35\x05\xfb\x77\x04\x58\x4e\xb9\x58\x6f\x31\xa9\x8d\x8d\xb6\x31\xc2\xfd\x14\x75\x6c\x79\x66\x68\xd5\x8c\x32\xdb\x76\xd7\x74\x2a\x74\x8e\x59\x02\x21\xad\x16\xec\xef\x14\x80\x6f\xc9\x91\x38\x1d\xd3\x50\xb9\xba\x01\xc5\x74\x35\x3b\x12\x70\x04\x87\x8f\xdb\x30\x32\xa6\x29\x96\x9e\xbc\x6b\x5b\x75\xba\xa5\x06\x99\x18\x5b\x08\x3f\x02\xc2\xf4\x81\x5f\x6f\x1e\xd1\x38\x76\x14\x7c\x9c\x1d\xb2\xdf\x69\x55\x08\x4d\xd6\x93\x11\xbd\xed\x98\xce\x64\x2a\xb8\xeb\x56\xe3\xa9\x18\x9b\x2a\x20\x5c\xab\x87\x28\xea\x42\xcc\x48\xce\x94\x06\x90\x7f\x46\xb6\xbe\x90\xf9\x42\x3c\xbc\x41\x9d\xfb\xe9\x08\xbe\x3d\xf9\xf7\xef\xbe\x5f\x33\x31\x00\x23\x66\x3f\xa1\xa6\xf8\xb3\xa2\xa9\xbb\x46\x0c\xcb\x0b\xbb\x05\x2a\xf1\x99\xd4\x9d\xb4\x24\x6f\xe7\x34\x15\x76\x6b\x41\xf7\x82\x13\x1a\x18\x0b\x4a\x2e\xab\x92\xe4\x42\x28\xcf\xfd\x71\x9d\x62\x1f\xe4\x64\xf5\x66\xb2\x01\x70\x35\x83\xe3\x93\x3e\x8c\xa3\x88\x97\xe1\xfb\xea\xe1\x26\x59\x41\xb2\x74\xf0\x43\x7f\x81\x1e\xca\x61\x2b\x8e\x78\x9c\x3e\xde\x4b\x3f\x05\x8b\x21\x0c\xc6\xe6\xf2\x8a\x30\x88\x0d\xbd\xdb\x14\x47\xc1\x30\xc7\xf5\xdd\x8e\xda\x6c\xa5\xf6\xdf\xfd\xdb\x7a\xfd\x4a\x2d\x8b\xaa\x18\xc1\xb3\x35\x53\x02\xa4\xed\xa8\xcd\x30\xb9\xcd\x02\x04\x41\x57\x6e\x45\x51\x70\x6a\x2d\x33\xd4\x9e\xea\x03\xdb\x35\x6d\xcf\x75\x12\x2f\x9c\x70\xab\xa9\x23\xc5\x27\x2e\xe2\x50\xc7\xd8\xcf\xad\xc9\xaa\x14\x2d\x47\xe0\x58\x71\xa4\x5d\x80\x9a\x95\x18\xbc\x21\xdc\x17\x50\x56\x8c\xa9\x6f\x3a\xf3\xa1\x79\x8f\x42\x4b\x9d\xbb\x78\xa4\x74\x01\x40\x42\xd4\xbd\x9f\x22\x87\x9e\xb9\x4a\x8f\xa9\x72\x32\x43\x8b\x19\x08\xc8\x2b\x61\x85\xf6\x88\x19\xc1\x4f\xa8\xf6\x42\xb7\xbc\x85\x3c\xd1\xf6\xa8\x6b\x6f\x0c\xae\x1a\xc0\x8a\x48\x8c\x7d\xed\xd0\x07\xf8\x6a\xae\x7a\xfc\xec\x64\xa3\xca\x9b\x79\xeb\x7b\x65\xc2\x7b\xb4\x7a\x04\xff\x75\x75\x3a\xf8\x4f\x31\xf8\xf3\xe6\x30\xfe\xe7\xd9\xe0\x87\xff\xee\x8f\x6e\x9e\x76\x7e\xde\x1c\xbd\xf8\x97\x35\x3b\xad\x4e\xdb\xd7\x98\x4f\x0c\x22\x75\x92\x58\x6b\xb4\xcf\x11\xc6\x4c\xe0\xd2\x56\xd8\x87\xd7\x42\x39\xec\xc3\x2f\x9a\x43\xc3\x17\x0a\x0d\x75\x55\x6c\x6e\x3b\xf6\xe8\xd4\xd5\xc9\x47\x33\x85\x49\xda\x3c\x27\x92\xbb\xa9\xf2\xdf\x4d\x48\x9c\xb6\x99\x49\x17\x69\x3a\x77\x21\xc0\x88\x47\x69\x69\x12\xd3\xdb\x24\x35\xc5\xb0\x73\x57\x42\x79\xf5\x5b\xa1\x67\xd0\xc2\x5a\x48\x4a\x17\x2d\xdd\x79\xc2\x26\x91\x5a\xe3\x5c\x73\x93\xe0\x40\xc9\x5b\x84\x26\x73\x0d\x60\x39\xc6\x54\x70\x22\x6e\xc7\xd2\x5b\x61\x67\x9d\xba\x03\x52\xa1\x63\xcd\x3f\xa9\x14\x1c\x3a\x44\x48\xb4\xc9\x70\x19\x5d\x8f\x02\x86\x8a\xb1\x54\xd2\xcf\x42\x83\x20\x35\x7a\xa2\x64\xcc\xff\x8b\xd2\x58\x2f\xb4\xaf\x9b\x2b\x39\x3e\x50\x29\xcb\x7d\x9d\x50\x04\x1f\x66\xda\x1d\x1f\x9f\x7c\x7b\x51\x8d\x33\x53\x08\xa9\x5f\x17\x7e\x78\xf4\xe2\xf0\x8f\x4a\x28\xee\x4c\x50\xcd\xfc\xba\xf0\x47\x5f\x2f\x2c\x1e\x7f\xb7\x83\x17\x1d\x5e\x05\x5f\xb9\x39\xbc\x1a\xc4\xff\x3d\xad\x3f\x1d\xbd\x38\xbc\x4e\x36\x8e\x1f\x3d\x25\x1e\x3a\x1e\x78\x73\x35\x68\xdd\x2f\xb9\x79\x7a\xf4\xa2\x33\x76\xb4\xec\x8c\x9d\xaa\x74\x6b\x81\xf9\xa6\x9d\x1b\xb2\x13\x5f\x3f\x1a\xa8\x3d\x73\x3e\x35\x5c\x2c\x39\xa3\x17\x53\x3c\x8e\xdb\x3c\xba\x7b\xb3\x4b\xd2\xa5\x77\xef\x96\xcc\xf7\x49\x42\x63\x7e\xf5\xd5\x77\x13\x81\xe6\x98\xfa\x27\xf6\x43\x60\xa9\x83\xf7\x01\x27\x8f\x6c\xe0\x7d\xc0\x09\x58\x9c\xa0\x45\x9d\x62\x2d\x98\xf9\xbe\x5d\xbc\xd6\x6d\x1a\x7b\x7f\xc1\x1d\xdd\xfa\x87\x00\x2b\x59\xa0\x64\x3f\x5e\xfe\xd7\xf6\x18\x79\x58\x7b\xe1\xb0\xd5\xa5\x39\x1e\x9f\x0b\x3f\xdd\x89\x82\x27\x67\x51\x6c\xdc\x9d\xe7\xfb\x92\x52\x62\x8a\x73\x6f\x0d\x38\x8f\x43\x91\xc5\x8f\x94\xf8\x58\x8c\x63\xfd\x90\x71\xc4\x3b\x89\xf6\x2d\x02\x25\x4d\x20\x08\x88\x65\x06\xff\x71\xf1\xfe\xdd\xf0\x27\x13\x73\x05\xaa\x66\x5c\xf0\x2d\xee\x26\xf7\xc1\x55\xe9\x14\x84\x23\xd2\xa8\xbe\xbd\xe0\xd6\x43\x21\xb4\x9c\xa0\xf3\x49\xdc\x0d\xad\xbb\x3a\xb9\x49\xe6\xdb\x1d\x32\x5e\x5c\xd4\x37\xf6\xd1\x00\xd8\x37\x88\x99\x66\x2d\x27\xad\x4c\x52\x69\xb2\x48\xf4\x3d\x13\xeb\xc5\x2d\x82\x89\xc4\x56\xc8\x41\x61\x04\x3d\x32\x93\xce\xd1\x1f\xc9\xb1\x3e\xf5\xe0\xf0\x7e\x8a\x16\xa1\x47\x3f\x7b\xe1\xc0\xe6\x81\x05\x7d\xeb\x44\xfc\x78\x70\xc8\xef\xad\xcc\x73\x4e\xb7\xf8\xb5\xc0\x1d\x6a\x7f\xc4\xf1\x6d\x02\xda\x74\x26\xeb\xd8\x87\x6e\xbb\xcf\x8b\x84\x5c\x9d\xdc\xf4\xe0\x70\x9e\x2f\x4a\x41\xf1\x01\x4e\x9a\x8e\x73\x69\xb2\xa3\xba\x6a\x9d\x69\x2f\x1e\xb8\x30\x98\x1a\x87\x3a\x74\xf6\xbd\x81\xa9\xb8\x43\x70\x86\x8a\x4f\x54\x6a\x10\x12\xcc\x0c\xee\x43\x03\xae\x16\x65\xb8\xb4\x29\x85\xf5\x0b\xcf\x4f\x2e\xdf\xbf\x7a\x3f\x0a\xa7\x91\xda\x72\x5d\x57\xb9\x13\xa9\x85\x8a\xb7\x0b\x4d\x7e\x48\x84\x54\x41\x49\xde\xc4\xd2\xb6\xbe\xf9\x98\x54\xbe\xb2\x98\x2c\x3e\x47\xd8\xd9\xe2\x57\xbd\x05\x59\x6d\xec\xfc\x26\x64\xd1\xd1\xfe\x17\x5f\x5c\xec\xcc\xa2\x5e\x73\xa3\xb1\xcc\xe2\xbb\x8e\x0d\x6e\x64\xb1\x85\x66\xe2\x32\x33\xa9\x23\x06\x53\x2c\xbd\x1b\x9a\x3b\x82\x4e\xbc\x1f\xde\x1b\x7b\x2b\x75\x3e\x20\x23\x1b\x04\xcd\xbb\x21\x87\x98\xe1\x37\xfc\xcf\x17\x71\xc4\x71\x6a\x77\xb6\xc2\xc3\xaf\xbf\x81\x37\x0e\x9f\xc3\xcf\x66\xad\xce\x2f\x1f\x13\x09\x9e\x5c\xd4\xc5\xdf\xc2\x6a\x72\x97\x70\xe1\x14\x5f\x84\x75\x10\xae\x10\x59\x80\x40\xa1\x67\x7f\xb9\x19\x93\x00\xb9\xc6\x4f\x67\x83\xf8\x64\x73\x20\x74\x36\x68\xf2\xeb\x74\xf6\xd9\x12\xab\xe4\x8e\x0e\xfc\xcb\xd9\xab\xbf\xc7\xb8\x2b\xf9\x28\x6f\x0d\x5d\x94\x11\x78\x5b\xd5\xd9\x9d\xf3\xc6\x8a\x1c\xe7\xbf\x55\xe3\xa6\xf8\x68\x19\x8e\x75\x25\x7c\xfc\xc4\x9f\xda\x47\x9a\x42\x95\x53\x71\x52\xaf\xdd\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x28\xec\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\x2f\x63\x75\xff\x54\x73\xff\x54\x73\xff\x54\xb3\xf9\xdb\x3f\xd5\xdc\x91\xb9\xfd\x53\xcd\x7f\xfa\x53\xcd\xff\xdf\x8f\x2f\xf7\x97\x63\xff\x37\x2e\xc7\xf6\xd7\x5d\xfb\xeb\xae\xfd\x75\xd7\xfe\xba\xeb\x33\x2c\x7e\x7f\xdd\xb5\xbf\xee\xda\x5f\x77\xed\xaf\xbb\xfe\xa1\xd7\x5d\x13\xa1\xdc\xce\xf7\x5d\xff\x13\x00\x00\xff\xff\xc7\xa0\x23\x13\x5c\x46\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x7b\x6f\x1c\x37\x92\xff\xdf\x9f\xa2\x30\x7b\x80\xa5\xdc\x3c\x2c\xe7\x90\xcb\x0e\x10\x04\x82\x1d\x07\xba\xd8\xb2\x60\xc9\x39\xe0\x2c\xdd\x2d\xa7\xbb\xba\x87\x2b\x36\xd9\x4b\xb2\x67\x34\x1b\xe4\xbb\x1f\xaa\xc8\x7e\xcd\x4b\xa3\xc4\xde\xdd\x00\xd3\xff\x48\xc3\x67\x55\xb1\xea\x57\x0f\x52\x94\xf2\x67\xb4\x4e\x1a\x3d\x05\x51\x4a\x7c\xf0\xa8\xe9\x97\x1b\xdf\x7f\xeb\xc6\xd2\x4c\x16\x67\xcf\xee\xa5\x4e\xa7\xf0\xaa\x72\xde\x14\x1f\xd0\x99\xca\x26\xf8\x1a\x33\xa9\xa5\x97\x46\x3f\x2b\xd0\x8b\x54\x78\x31\x7d\x06\x20\xb4\x36\x5e\x50\xb3\xa3\x9f\x00\x89\xd1\xde\x1a\xa5\xd0\x8e\x72\xd4\xe3\xfb\x6a\x86\xb3\x4a\xaa\x14\x2d\x2f\x5e\x6f\xbd\x78\x31\xfe\x76\xfc\xe2\x19\x40\x62\x91\xa7\xdf\xc8\x02\x9d\x17\x45\x39\x05\x5d\x29\xf5\x0c\x40\x8b\x02\xa7\x60\x4a\xb4\xc2\x1b\x9b\x5b\x53\x95\x6e\x5c\xff\x74\xe3\xc4\x58\x34\xf4\xa7\x78\xe6\x4a\x4c\x68\x77\x1e\xd3\x4e\xe9\x8d\x09\xeb\xd5\x44\x0a\x8f\xb9\xb1\xb2\xfe\x0d\x30\x02\xa3\x0a\xfe\x3f\x30\xff\x3e\xae\xf1\x23\x2d\xc9\xed\x4a\x3a\xff\xd3\x66\xdf\x5b\xe9\x3c\xf7\x97\xaa\xb2\x42\xad\x13\xcc\x5d\x6e\x6e\xac\xbf\x6c\xb7\xe7\xed\xf2\xd0\x25\x75\x5e\x29\x61\xd7\xe6\x3d\x03\x70\x89\x29\x71\x0a\x3c\xad\x14\x09\xa6\xcf\x00\xa2\xf8\xe2\x32\xa3\x28\xa2\xc5\x59\x5c\xd5\x25\x73\x2c\x44\xbd\x07\xd0\x92\xfa\xfc\xea\xe2\xe7\xaf\xaf\xd7\x3a\x00\x52\x74\x89\x95\xa5\xe7\xc3\xe8\x31\x04\xd2\x81\x9f\x23\x54\x5a\x7a\x30\x19\x14\x95\xf2\xd2\xa3\x16\x3a\x59\x41\x66\x2c\xbc\x7f\xfb\x0e\x0a\xa1\x45\x8e\x69\x47\xd4\x70\xe1\xe9\xec\x9d\xb7\x42\xea\xb0\x82\xd4\xce\x0b\xa5\xf8\x78\x69\xa5\x66\x30\x48\x0d\xd2\xbb\x70\x22\xc4\x1b\x78\x03\x02\xe8\x18\x65\x26\x31\x05\x87\xbc\xb5\x17\x36\x47\xdf\x0e\x73\xe3\x0e\x07\x7e\x45\xe2\x31\xb3\xbf\x62\xe2\x3b\xcd\x16\xff\x56\x49\x8b\x69\x97\x59\x12\x55\xad\xb4\x9d\xe6\xd2\x12\x45\xbe\xa3\x05\xe1\xeb\x98\x48\xaf\x7d\x4d\x6a\xcf\x49\xb4\x61\x1c\xa4\x64\x1d\x18\xd8\x8e\x87\x44\x6c\xb0\xd8\x99\x93\xb9\x74\x60\xb1\xb4\xe8\x50\xfb\x46\x22\x42\x47\x06\xc6\x70\x8d\x96\x26\x92\xae\x54\x2a\x25\x51\x2e\xd0\x7a\xb0\x98\x98\x5c\xcb\xbf\x37\xab\x39\x92\x15\x6d\xa3\x84\x47\xe7\x41\x6a\x8f\x56\x0b\x05\x0b\xa1\x2a\x1c\x82\xd0\x29\x14\x62\x05\x16\x69\x5d\xa8\x74\x67\x05\x1e\xe2\xc6\xf0\xce\x58\x3a\x9d\xcc\x4c\x61\xee\x7d\xe9\xa6\x93\x49\x2e\x7d\x0d\x00\x89\x29\x0a\x3a\xfc\xd5\x84\x6d\x59\xce\x2a\x3a\xb3\x49\x8a\x0b\x54\x13\x27\xf3\x91\xb0\xc9\x5c\x7a\x4c\x7c\x65\x71\x22\x4a\x39\x62\x62\x35\x83\xc0\xb8\x48\xff\x64\x23\x64\xb8\xe7\x6b\xe2\x0b\x47\xe6\xbc\x95\x3a\xef\x75\xb1\xcd\xed\x95\x35\x59\x1e\x69\xa6\x88\xd3\x03\x2f\xad\x48\xa9\x89\xa4\xf2\xe1\x87\xeb\x1b\xa8\x09\x08\x62\x0f\x12\x6e\x87\xba\x56\xd8\x24\x28\xa9\x33\xb4\x61\x64\x66\x4d\xc1\xab\xa0\x4e\x4b\x23\xb5\xe7\x1f\x89\x92\xa8\x3d\xb8\x6a\x56\x90\xd2\x92\x82\xa1\xf3\x74\x0e\x63\x78\xc5\xf8\x07\x33\x84\xaa\x4c\x85\xc7\x74\x0c\x17\x1a\x5e\x89\x02\xd5\x2b\xe1\xf0\x8b\x8b\x9a\x24\xea\x46\x24\xbe\xc3\x85\xdd\x85\xef\xcd\x09\x1b\x06\x05\x50\xc3\xeb\xce\xd3\xe9\xe1\xc7\x75\x89\x49\x8d\x21\x34\x93\x31\x43\xe8\x35\x90\xa9\x8f\x68\x7c\x28\x11\xb4\x65\x26\x2a\xe5\xd7\x29\x01\xa8\xca\xdc\x8a\x14\xaf\xbd\x25\x58\x5f\x4d\xe1\x75\x18\xb9\x36\x70\x97\xb9\x33\x8b\xa8\x30\xf1\xc6\x6e\xf6\xac\xb1\x7a\x1d\x07\xc6\x19\x81\xcd\x1e\x6b\xcf\xdd\x7e\xdc\x3a\x80\xd3\xc7\xa8\xa5\xaf\x10\x3e\x99\xff\xf0\x40\x3a\xdd\x71\x09\x8f\x50\xbf\x3e\x29\x58\x14\x79\x36\x42\x23\x25\x66\xa8\x1a\x51\xd4\x48\x5a\x04\x93\xb9\x99\x63\xaf\x05\x84\x45\x38\xbf\x7c\x8d\xe9\x36\xe6\x5a\x06\x85\xb5\x62\xb5\x63\x84\xf4\x58\xec\x24\x7c\x8d\xf4\xf3\x3d\xe4\x45\x60\xa8\x7b\xfc\x5c\xb0\x2f\xf2\xec\x89\x02\xe8\x0d\x41\xc0\x3d\xae\x02\x3e\x12\xec\xc6\x23\x0b\x83\x2d\x32\x9a\xf2\x61\xde\xe3\x8a\x07\x45\xb0\xdc\x49\xdd\x23\xe7\x17\xbe\xed\xde\xa8\xff\x8d\x68\xcb\xbd\xfd\x35\xb1\x3b\x07\x3d\xa6\x2c\xe1\xbb\xc7\xd5\xbe\xee\x35\x81\x93\x1c\xa2\x19\x07\xc9\x53\x03\x4b\x8b\x2d\xbb\x16\xb6\x28\x4b\x25\x91\xd1\x70\xef\xda\x3b\xe1\xa8\xff\xd5\xac\x3e\x81\xd0\xe6\x28\x5b\x84\x0f\x87\xfd\xdc\x85\x83\x25\x4d\x9f\xcb\x32\x06\x19\x21\xb4\xa8\x5d\xe1\xcf\x42\xc9\x4e\x18\xc3\x5a\x7d\xa1\x87\x70\x69\x3c\xfd\xf9\xe1\x41\x12\xd4\x93\x3e\xbc\x36\xe8\x2e\x8d\xe7\x96\xcf\xc2\x6a\x20\xe1\x09\x8c\x86\x09\xac\xec\x3a\xd8\x15\x71\xd2\xf5\x87\x14\x86\x65\x7c\x3e\x8d\x50\xa4\x23\x8f\x64\x6c\xcd\x11\x47\x28\x61\xa1\xb0\x44\x51\x39\x76\x60\xda\xe8\x11\x16\xa5\x5f\x6d\x5d\x23\x0a\xc2\xd8\x9e\x1c\xf6\x2c\x17\x97\xba\x21\xbf\x1a\x7a\x42\x04\xa4\x28\x94\x85\xb4\x62\xa2\xd9\x9b\x13\x68\xcb\x04\x0a\xb4\x39\x42\x49\x08\x75\x88\x78\xf7\xe1\x4a\xf8\x1e\x41\x97\x03\xcf\x8a\x21\xf3\x2d\x19\xc0\x13\x20\x36\x8c\x0f\xb0\x54\x88\x92\x8e\xe9\x17\x42\x1f\x96\xd4\xaf\x50\x0a\x49\x11\xf3\x39\x47\xff\x0a\x7b\x7d\x52\xb3\x4c\xbb\xcb\xd0\x0a\xd2\x01\x41\xc9\x42\x28\xc2\x3b\xd2\x64\x0d\xa8\x02\xfa\x51\x90\xbe\x06\xec\x43\x58\xce\x8d\x0b\x60\x96\x49\x54\x1c\x3b\x0d\xee\x71\x35\x18\x6e\x1c\xed\xe0\x42\x0f\x02\x2e\x6e\x1c\x66\x03\xa2\x46\xab\x15\x0c\xb8\x6f\xf0\xdb\x7d\xc1\x5e\xb0\x14\x69\xca\xe9\xa5\x50\x57\x07\xa0\xd9\xde\x73\x73\x68\x17\x32\xc1\xf3\x24\x31\x95\xe6\xc4\xeb\x00\xbf\xbe\x3e\xa5\x06\x3f\x91\x16\x52\xf7\x72\x13\x1e\x09\x22\x0c\x85\xe5\x5c\x26\x73\x58\x4a\xa5\x38\x0c\x74\x98\xd2\xf1\xa4\x58\x2a\xb3\x6a\xe4\x7c\xe2\x4e\xc3\xc9\x52\x3c\x5a\xcb\x9e\x33\xbd\xdd\xa1\xc1\x2e\xe6\x28\x7d\x48\xae\xac\x59\xc8\x14\xd3\xf3\xab\x8b\xad\x52\xea\x33\xc7\x53\xc0\xa3\x52\x8e\xd3\x37\x8a\x59\xbd\x89\x31\xeb\xd6\x10\xa6\xec\xac\xdf\x49\xf2\x77\x12\x3b\x33\x46\xa1\xd8\xec\x0f\xa1\x50\x93\xc4\x3e\x4e\xeb\xcd\xda\x84\x08\x77\xf8\x50\x2a\x99\x48\x5f\xe3\x77\x1b\x5b\x71\x3e\xc4\x93\x18\xb8\x24\x47\x03\x0e\xfd\xb0\x8d\xd5\xa4\x03\x99\x6b\x63\xb7\xeb\xe7\x7e\x3c\xd9\x83\x22\x8f\x60\xc7\xc3\xe8\xbe\x9a\xa1\xd5\xe8\xd1\x8d\x28\xc6\x1a\xc5\x09\xb8\x69\x02\xeb\x21\xec\x63\x52\x1a\x7c\xec\x4f\xe8\x25\xa0\x71\xb1\x1a\x5b\x43\xd6\xde\x4b\xbe\x69\x54\x23\x41\xb6\x67\x8b\x6c\xc4\x49\x65\x2d\x6a\xaf\x56\xe0\x97\x06\x5c\x55\x96\xc6\x7a\x4c\xd7\x97\x24\xd3\x84\x5b\x5d\x07\xda\x53\x56\x2a\x36\x01\x06\x0a\xa1\x94\x59\x42\xa2\x2a\xe7\xd1\x46\xcb\x8a\x99\x32\x1f\x57\x61\x16\x58\xa7\xb1\xc1\x25\x90\x33\x28\xe7\xc2\x61\x9b\x83\xb9\x2a\x49\x10\x53\x4c\x43\x47\x74\x25\x98\x65\x98\x78\xb9\x40\xb5\x82\x02\x05\x57\x1a\x84\x6f\xf7\x27\xcd\x0e\xdb\xb7\x0c\xaf\xed\xa8\xf1\xc1\xd7\x49\x3a\x48\x4e\xc2\xfb\x95\x0a\xdb\xb0\x3b\x17\x0e\x32\x21\x15\xe5\x75\xb7\x1a\x3e\x6a\x27\x32\x7c\x23\xa4\x7a\x63\xec\x52\xd8\xb4\xc3\xf8\x97\xe0\x99\x48\x69\xfa\x02\x1d\xb5\x30\xce\x1b\xb4\x54\xab\x61\x4b\x45\x8e\x9a\xb8\x26\x26\x97\x35\x57\x57\x8a\xc4\xb4\x9c\xa3\x26\x7f\x5b\xcd\x1a\x35\x02\x8b\x19\x5a\xd4\x64\x44\xa2\x5e\xbf\x33\xa9\xf1\x09\x89\xf0\x42\x99\x9c\xc5\x31\x43\xd4\x75\xb2\x0b\x4b\xe9\xe7\x20\x78\xb3\x5a\x64\x19\xc7\xd4\x08\x48\xf1\x01\xb1\x18\x0d\xb6\x53\x29\xba\xd5\xf0\xdf\xe7\x1f\x2e\x2f\x2e\x7f\x9c\xb2\x2b\xd9\x10\xeb\xa6\x06\x4b\x07\x15\x8f\xea\xd4\x37\x5c\xa5\x3c\x29\x73\xa5\xf1\xa1\xc4\x84\xe8\x99\xe1\x5c\x2c\x24\x69\xbb\x8d\x95\x8f\x05\x5a\x31\x53\x08\x94\xf0\x82\x32\x8e\xd6\x51\xe8\x1c\xac\x4c\x05\x73\xb1\x40\x48\x11\x4b\xa8\x74\x8a\xd6\x79\xa1\x53\x22\xd9\x64\x31\xc6\xed\x53\x0e\x33\xa4\xde\xba\xf6\xb5\x69\x47\xfd\x3c\xd8\x0b\x5f\xb9\x26\x13\x0e\xbf\xb6\xe5\xc2\x75\x85\x75\x3c\x78\xaa\x2b\x68\x73\xe2\x1d\x29\x2f\x7d\xa8\xab\x62\x3b\x7e\x8d\xf6\xcc\xa2\xde\x8d\x73\xe9\x57\x05\x98\xa3\x83\x8b\x08\xfb\x72\xa1\x11\x28\xe1\xfc\xc7\xa0\x54\x4f\xc8\xda\x13\xa3\x83\x15\x3c\xee\x56\x5e\x35\x43\xd7\xe3\xe7\x6d\xde\xaf\x5d\xf8\xb3\x3a\x8c\x3e\x84\x37\x24\xb5\x61\x56\x8a\x5e\x48\x15\xd4\xc4\x68\x04\x41\x61\x87\xaf\xa9\x8c\xe0\xcc\x92\xc7\xa6\xaa\x78\x7e\x75\x01\x8d\x0a\xc1\x68\x34\x0a\x40\xe9\xbc\xad\x12\xf6\x85\x52\x7b\xd4\x84\x29\xb4\x6a\x2a\x2d\x97\x05\x1d\x2d\xde\xca\x21\x66\x75\x21\x54\x2c\x85\x9f\xc3\x38\x9c\xef\xb8\x23\x0a\x80\x37\xc6\x02\x3e\x88\xa2\x54\x38\x64\x31\xc0\x1b\x63\xa2\xa2\x87\x0d\x7f\x81\xc9\x04\x3e\xb4\x89\x18\x07\x9b\x33\x8a\x99\x42\x1e\xc6\x55\x4f\xc8\x8c\x21\x29\x77\xf9\x19\xd3\xc4\x9f\xb4\x59\xea\x6d\x5b\xf3\x5e\xc2\xe2\x14\x6e\x07\xe7\x0b\x21\x15\x19\xf5\xed\x60\x08\xb7\x83\x2b\x6b\x72\x0e\x7b\x75\x7e\x1b\xe3\xd8\xdb\xc1\x6b\x64\x00\x49\x6f\x07\xb4\xec\xbf\x73\x56\xf1\x8e\x12\x8c\x9f\x70\xf5\x1d\x2f\xd6\x34\xd7\x2e\xf4\xbb\x90\x80\x50\x3b\x39\xeb\x9b\x55\x89\xdf\x51\xe4\x5d\x37\xbc\x13\x65\x33\xb9\xa3\x4d\x9f\xee\x0a\xf4\x62\x71\x36\x6e\x8f\xf3\x2f\x7f\x75\x46\x4f\x6f\x07\x2d\xfd\x43\x53\x90\x5a\x94\x7e\x75\x3b\x80\xde\xae\xd3\xdb\x01\xef\x5b\xb7\xd7\x44\x4e\x6f\x07\xb4\x13\x35\x5b\xe3\xcd\xac\xca\xa6\xb7\x83\xd9\xca\xa3\x1b\x9e\x0d\x2d\x96\x43\x82\x9d\xef\xda\x1d\x6e\x07\x7f\x21\x5c\x9d\x4c\xc0\xf8\x39\xda\x70\x92\x0e\x7e\xdd\x86\x29\x07\x84\xe3\x8f\xd5\x2d\x82\xc5\xde\x58\xa1\x9d\xac\x6f\x6f\x76\x0e\x2d\xd0\x39\x91\xef\xee\xb7\x28\xdc\xd6\xd0\x32\x74\x07\x6d\xd8\xd9\x4d\xbc\x6c\xed\x7c\xbc\x28\xb2\xc9\xc3\x81\xc5\xa8\xcd\x89\x6d\xa9\xc4\x79\xf0\xd4\xc0\x16\xdb\xe8\x84\x6f\x46\x93\x21\x92\x4f\x27\xfb\x8e\x5e\x81\xd3\x39\x3e\xb7\x18\xe5\xc4\x4b\x80\x19\x06\xb7\x1d\xae\x63\x52\xb4\x6a\x45\x0e\xa8\x5d\x35\x99\x0b\x9d\x53\x70\x12\x52\x76\xc1\xf6\x4e\x21\xd0\x3d\x19\x12\xa7\x7a\x1a\x2a\x57\x17\xc7\x99\xae\x66\x45\x02\x8e\x60\xf0\x71\x19\x46\xc6\x24\xc1\xd2\x93\x75\x3d\x56\xf9\x7a\xa4\xbe\x91\x19\x5b\x08\x3f\x25\xc7\x8b\x23\xbf\x5b\x3d\xa2\x72\x1c\x28\xf8\x38\x3a\x64\xd6\xf3\xaa\x10\x14\xc4\x88\x94\x5d\x7c\xd3\xa7\x53\x99\x08\x8e\x3d\x6a\x3c\x15\x33\x53\x05\x84\x6b\xcf\x21\x8a\x9a\x62\x89\x19\x72\x8a\x41\xf6\x19\xd9\xfa\x9d\xcc\x17\xe2\xe1\x2d\xea\xdc\xcf\xa7\xf0\xf5\xcb\xff\xfc\xe6\xdb\x1d\x03\x03\x30\x62\xfa\x63\x88\xda\xb6\x5c\x38\xed\x10\xc3\xe6\xc4\x6e\xf1\x8b\xf8\x1c\xd7\x55\xfe\x71\xde\x8e\x69\xaa\x77\xad\x06\x2d\x05\x27\x4b\x30\x13\x8e\xc3\x7c\x92\x0b\xa1\x3c\x87\x81\x3a\xc1\x21\x45\xc8\x5b\x17\x93\xae\x93\x2d\x9c\xbd\x1c\xc2\x2c\x8a\x78\x13\xbe\x3f\x3d\xdc\x8d\xb7\x90\x2c\x1d\xfc\x79\xb8\x46\x0f\xe5\xc7\x15\x7b\x3c\x4e\x4d\x39\xc0\xb4\x18\xdc\x60\x8c\x9e\xb7\xb8\x41\x6c\xe8\x7d\xec\xe0\xc8\x19\xe6\xb8\xbb\x92\x5a\xab\xad\xd4\xfe\x9b\xff\xd8\x7d\xbe\x52\xcb\xa2\x2a\xa6\xf0\x62\xc7\x90\x00\x69\x07\x9e\x66\x18\xdc\x46\x01\x82\xa0\x2b\xb7\xa2\x28\x38\x6d\x97\x29\x6a\x2f\x33\x89\xb6\xab\xda\x21\x8f\xe0\x89\x75\xc8\xdd\x48\xf1\xb9\x8b\x38\xd4\x51\xf6\x2b\x6b\xd2\x2a\x41\xcb\x1e\x38\x56\x33\x92\x2e\x40\xad\x4a\x0c\xd6\x10\x52\x49\x68\x82\xea\xba\x22\x44\x81\x37\x0a\x2d\x75\xee\xe2\x96\xd2\x05\x00\x09\x5e\x77\x39\x47\x76\x3d\xbd\x2a\x12\x53\xe5\x64\x8a\x16\x53\x10\x90\x57\xc2\x0a\xed\x11\x53\x82\x9f\x50\x49\x0a\x37\x79\x2d\xe4\x89\xf6\xfe\xac\xb6\xc6\x60\xaa\x01\xac\x88\xc4\x78\xe7\x16\x6a\x8c\x9f\xcd\x54\xcf\x5e\xbc\xdc\x7b\xe4\xcd\xb8\xdd\x75\x78\xe1\x3d\x5a\x3d\x85\xff\xfd\x74\x3e\xfa\x1f\x31\xfa\xfb\xdd\x49\xfc\xe7\xc5\xe8\xcf\xff\x37\x9c\xde\x7d\xd5\xf9\x79\x77\xfa\xfd\xbf\xed\x58\x69\x7b\x6c\xbd\x43\x7d\xa2\x13\xa9\x83\xc4\xfa\x44\x87\xec\x61\x4c\x06\x37\xb6\xc2\x21\xbc\x11\xca\xe1\x10\x3e\x6a\x76\x0d\xbf\x53\x68\xbb\x73\x8a\xf0\x8d\x60\x40\xbb\x6e\x0f\x3e\x9a\x21\x4c\xd2\xfe\x31\x91\xdc\x7d\x55\xc5\xc3\x84\xc4\x61\x9b\xc9\xba\x48\xd3\xb9\xa7\x05\x46\x3c\x0a\x4b\xc7\x31\xbc\x1d\x27\xa6\x98\x74\xee\x71\x29\xae\x7e\x27\xf4\x0a\x5a\x58\x0b\x41\xe9\xba\xa6\x3b\x4f\xd8\x24\x12\x4b\xb9\x66\x73\x13\x0e\x4a\xde\x23\x34\x91\x6b\x00\xcb\x19\x26\x82\x03\x71\x3b\x93\xde\x0a\xbb\xea\xe4\x1d\x90\x08\x1d\xeb\x89\x59\xa5\xe0\xc4\x21\xc2\x58\x9b\x14\x37\xd1\xf5\x34\x60\xa8\x98\x49\x25\xfd\x2a\x14\x1f\x13\xa3\x33\x25\x63\xfc\x5f\x94\xc6\x7a\xa1\x7d\x5d\xb8\xcd\xf1\x01\xa4\x0f\x35\xe3\x50\x60\x3b\x49\xb5\x3b\x3b\x7b\xf9\xf5\x75\x35\x4b\x4d\x21\xa4\x7e\x53\xf8\xc9\xe9\xf7\x27\x7f\xab\x84\xe2\xaa\xe7\xa5\x28\xf0\x4d\xe1\x4f\x3f\x9f\x5b\x3c\xfb\xe6\x00\x2b\x3a\xf9\x14\x6c\xe5\xee\xe4\xd3\x28\xfe\xf7\x55\xdd\x74\xfa\xfd\xc9\xed\x78\x6f\xff\xe9\x57\xc4\x43\xc7\x02\xef\x3e\x8d\x5a\xf3\x1b\xdf\x7d\x75\xfa\x7d\xa7\xef\x74\xd3\x18\x3b\x59\xe9\xa3\x09\xe6\xdb\x76\x6c\x88\x4e\x7c\xfd\xa0\xa9\xb6\xcc\x7e\x68\xb8\x9e\x72\x46\x2b\x26\x7f\x1c\x97\x79\x72\x65\xf8\x90\xa0\x4b\x1f\x5e\x89\xed\xd7\x60\x3b\x05\x91\x8d\xeb\xed\xc6\x03\xf5\x98\xfa\x57\xad\xb5\xf6\x6f\x07\x3e\x60\xf6\xc4\xcb\x81\x0f\x98\x75\x2b\x67\x41\x30\xfd\x3b\x81\xf8\xe4\xa4\xb9\x34\xf8\x02\xf7\xff\xbb\x1f\x29\x6d\x65\x81\x82\xfd\xba\xe6\x19\xf5\x31\xf2\xb0\xf3\x32\xf3\x51\x93\x66\x7f\x7c\x25\xfc\xfc\x20\x0a\x9e\x5f\x44\xb1\xf1\xcd\x1f\xdf\xc5\x96\x12\x13\xec\xbd\x83\xe2\x38\x0e\x45\x1a\x1b\x29\xf0\xb1\x18\xfb\x86\x21\xe2\x88\xf7\x9d\xed\x3b\x29\x0a\x9a\x40\x10\x10\xcb\x14\xfe\xeb\xfa\xfd\xe5\xe4\x47\x13\x63\x05\xca\x66\x5c\xb0\x2d\xbe\xa9\x1a\x82\xab\x92\x39\x08\x47\xa4\x51\x7e\x7b\xcd\xa5\x87\x42\x68\x99\xa1\xf3\xe3\xb8\x1a\x5a\xf7\xe9\xe5\xdd\xb8\x5f\xee\x90\xf1\x52\xb4\x7e\x4d\x14\x15\x80\x6d\x83\x98\x69\xe6\x72\xd0\xca\x24\x95\x26\x8d\x44\x2f\x99\x58\x2f\xee\x11\x4c\x24\xb6\x42\x76\x0a\x53\x18\x90\x9a\x74\xb6\xfe\x85\x0c\xeb\xd7\x01\x9c\x2c\xb9\x2c\x3f\xa0\x9f\x83\xb0\x61\xf3\xf8\x8b\xda\x3a\x1e\x3f\x6e\x1c\xe2\x7b\x2b\xf3\x9c\xc3\x2d\x2e\xc3\x2e\x50\xfb\x53\xf6\x6f\x19\x68\xd3\x19\xac\xe3\x1d\x57\x7b\xb3\xb5\x4e\xc8\xa7\x97\x77\x03\x38\xe9\xf3\x45\x21\x28\x3e\xc0\xcb\xe6\x36\xab\x34\xe9\x69\x9d\xb5\xae\xb4\x17\x0f\x9c\x18\xcc\x8d\x43\x1d\x2e\x03\xbc\x09\x75\x56\x67\x28\xf9\x44\xa5\x46\x21\xc0\x4c\x61\x19\x0a\x70\xb5\x28\xc3\x85\x70\x29\xac\x5f\x7b\x1a\x77\xf3\xfe\xf5\xfb\x69\xd8\x8d\x8e\x2d\xd7\x75\x96\x9b\x49\x2d\x54\xac\x52\x37\xf1\x21\x11\x52\x85\x43\xf2\x26\xa6\xb6\x75\xad\x36\xab\x7c\x65\x71\xbc\xfe\x54\xea\x60\x8d\xdf\xf6\x4e\x6d\xbb\xb2\xf3\x7b\xb5\x75\x43\xfb\x27\xbe\x06\x3b\x98\x45\xbd\xe3\xb6\x74\x93\xc5\xcb\x8e\x0e\xee\x65\xb1\x85\x66\xe2\x32\x35\x89\x23\x06\x13\x2c\xbd\x9b\x98\x05\x41\x27\x2e\x27\x4b\x63\xef\xa5\xce\x47\xa4\x64\xa3\x70\xf2\x6e\xc2\x2e\x66\xf2\x27\xfe\xf3\xbb\x38\x62\x3f\x75\x38\x5b\xe1\x51\xea\x3f\x80\x37\x76\x9f\x93\xdf\xcc\x5a\x1d\x5f\x3e\xc5\x13\x3c\xbf\xae\x93\xbf\xb5\xd9\x64\x2e\xe1\x32\x3b\xbe\x56\xed\x20\x5c\x21\xd2\x00\x81\x42\xaf\xbe\xb8\x1a\x93\x00\x39\xc7\x4f\x56\xa3\xf8\x9c\x7c\x24\x74\x3a\x6a\xe2\xeb\x64\xf5\x9b\x25\x56\xc9\x03\x0d\xf8\xe3\xc5\xeb\x7f\x8c\x72\x57\xf2\x49\xd6\x1a\xaa\x28\x53\xf0\xb6\xaa\xa3\x3b\xe7\x8d\x15\x39\xf6\xdb\xaa\x59\x93\x7c\xb4\x0c\xc7\xbc\x12\x7e\xf9\x95\x9b\xda\x07\xe4\x42\x95\x73\xf1\xb2\x9e\x7b\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\xbe\x57\xd8\x7f\xd4\x67\xe4\xc7\x67\xe0\xc7\x67\xe0\xc7\x67\xe0\xbb\xbb\x8f\xcf\xc0\x8f\xcf\xc0\x8f\xcf\xc0\xd7\xbf\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\x2d\xdf\xce\x63\xda\x7e\x8b\xbb\x27\xe4\x7d\xf2\x8b\xd1\xc3\xa3\xde\xcf\xff\xf8\xf2\x78\x39\xf6\xc7\xb8\x1c\x3b\x5e\x77\x1d\xaf\xbb\x8e\xd7\x5d\xc7\xeb\xae\xdf\xa0\xf1\xc7\xeb\xae\xe3\x75\xd7\xf1\xba\xeb\x78\xdd\xf5\x2f\x7a\xdd\x95\x09\xe5\x0e\xbe\xef\xfa\xff\x00\x00\x00\xff\xff\xf3\xee\x0f\x50\xf8\x4a\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go b/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go index 1706eb17e4..0110ce8948 100644 --- a/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go +++ b/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go @@ -45,9 +45,32 @@ type OperatorGroupSpec struct { // Static tells OLM not to update the OperatorGroup's providedAPIs annotation // +optional StaticProvidedAPIs bool `json:"staticProvidedAPIs,omitempty"` + + // UpgradeStrategy defines the upgrade strategy for operators in the namespace. + // There are currently two supported upgrade strategies: + // + // Default: OLM will only allow clusterServiceVersions to move to the replacing + // phase from the succeeded phase. This effectively means that OLM will not + // allow operators to move to the next version if an installation or upgrade + // has failed. + // + // UnsafeFailForward: OLM will allow clusterServiceVersions to move to the + // replacing phase from the succeeded phase or from the failed phase. + // Additionally, OLM will generate new installPlans when a subscription references + // a failed installPlan and the catalog has been updated with a new upgrade for + // the existing set of operators. + // + // WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result + // in unexpected behavior or unrecoverable data loss unless you have deep + // understanding of the set of operators being managed in the namespace. + // OperatorGroupStatus is the status for an OperatorGroupResource. + // + // +kubebuilder:validation:Enum=Default;UnsafeFailForward + // +kubebuilder:default=Default + // +optional + UpgradeStrategy string `json:"upgradeStrategy,omitempty"` } -// OperatorGroupStatus is the status for an OperatorGroupResource. type OperatorGroupStatus struct { // Namespaces is the set of target namespaces for the OperatorGroup. // +listType=set @@ -76,6 +99,7 @@ type OperatorGroup struct { metav1.ObjectMeta `json:"metadata"` // +optional + // +kubebuilder:default={upgradeStrategy:Default} Spec OperatorGroupSpec `json:"spec"` Status OperatorGroupStatus `json:"status,omitempty"` } @@ -90,6 +114,11 @@ type OperatorGroupList struct { Items []OperatorGroup `json:"items"` } +const ( + DefaultUpgradeStrategy = "Default" + UnsafeFailForwardUpgradeStrategy = "UnsafeFailForward" +) + // BuildTargetNamespaces returns the set of target namespaces as a sorted, comma-delimited string func (o *OperatorGroup) BuildTargetNamespaces() string { ns := make([]string, len(o.Status.Namespaces)) @@ -98,6 +127,17 @@ func (o *OperatorGroup) BuildTargetNamespaces() string { return strings.Join(ns, ",") } +// IsServiceAccountSpecified returns true if the spec has a service account name specified. +func (o *OperatorGroup) UpgradeStrategy() string { + strategyName := o.Spec.UpgradeStrategy + switch { + case strategyName == UnsafeFailForwardUpgradeStrategy: + return strategyName + default: + return DefaultUpgradeStrategy + } +} + // IsServiceAccountSpecified returns true if the spec has a service account name specified. func (o *OperatorGroup) IsServiceAccountSpecified() bool { if o.Spec.ServiceAccountName == "" {