github.com/verrazzano/verrazzano@v1.7.1/tests/e2e/backup/helpers/constants.go (about)

     1  // Copyright (c) 2022, 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package helpers
     5  
     6  const (
     7  	ObjectStoreCredsAccessKeyName       = "aws_access_key_id"     //nolint:gosec //#gosec G101 //#gosec G204
     8  	ObjectStoreCredsSecretAccessKeyName = "aws_secret_access_key" //nolint:gosec //#gosec G101 //#gosec G204
     9  	RancherUserCount                    = 1
    10  	KeycloakUserCount                   = 3
    11  	BackupResource                      = "backups"
    12  	RestoreResource                     = "restores"
    13  	BackupStorageLocationResource       = "backupstoragelocations"
    14  	BackupPodVolumeResource             = "podvolumebackups"
    15  	RestorePodVolumeResource            = "podvolumerestores"
    16  	InnoDBClusterName                   = "mysql"
    17  )
    18  
    19  // SecretsData template for creating backup credentials
    20  const SecretsData = //nolint:gosec //#gosec G101 //#gosec G204
    21  `[default]
    22  {{ .AccessName }}={{ .ObjectStoreAccessValue }}
    23  {{ .ScrtName }}={{ .ObjectStoreScrt }}
    24  `
    25  
    26  // ProfileData template for creating backup credentials
    27  const ProfileData = `[default]
    28  region={{ .Region }}
    29  `
    30  
    31  // VeleroBackupLocation template for creating velero backup storage location object.
    32  const VeleroBackupLocation = `
    33      apiVersion: velero.io/v1
    34      kind: BackupStorageLocation
    35      metadata:
    36        name: {{ .VeleroBackupStorageName }}
    37        namespace: {{ .VeleroNamespaceName }}
    38      spec:
    39        provider: aws
    40        objectStorage:
    41          bucket: {{ .VeleroObjectStoreBucketName }}
    42          prefix: {{ .VeleroBackupStorageName }}
    43        credential:
    44          name: {{ .VeleroSecretName }}
    45          key: cloud
    46        config:
    47          region: {{ .VeleroBackupRegion }}
    48          s3ForcePathStyle: "true"
    49          s3Url: https://{{ .VeleroObjectStorageNamespaceName }}.compat.objectstorage.{{ .VeleroBackupRegion }}.oraclecloud.com`
    50  
    51  // VeleroBackup template for creating velero backup object.
    52  const VeleroBackup = `
    53  ---
    54  apiVersion: velero.io/v1
    55  kind: Backup
    56  metadata:
    57    name: {{ .VeleroBackupName }}
    58    namespace: {{ .VeleroNamespaceName }}
    59  spec:
    60    includedNamespaces:
    61      - verrazzano-logging
    62    labelSelector:
    63      matchLabels:
    64        opster.io/opensearch-cluster: opensearch
    65    defaultVolumesToRestic: false
    66    storageLocation: {{ .VeleroBackupStorageName }}
    67    hooks:
    68      resources:
    69        - 
    70          name: {{ .VeleroOpensearchHookResourceName }}
    71          includedNamespaces:
    72            - verrazzano-logging
    73          labelSelector:
    74            matchLabels:
    75              statefulset.kubernetes.io/pod-name: opensearch-es-master-0
    76          post:
    77            - 
    78              exec:
    79                container: opensearch
    80                command:
    81                  - /usr/share/opensearch/bin/verrazzano-backup-hook
    82                  - -operation
    83                  - backup
    84                  - -velero-backup-name
    85                  - {{ .VeleroBackupName }}
    86                onError: Fail
    87                timeout: 10m`
    88  
    89  // VeleroRestore template for creating velero restore object.
    90  const VeleroRestore = `
    91  ---
    92  apiVersion: velero.io/v1
    93  kind: Restore
    94  metadata:
    95    name: {{ .VeleroRestore }}
    96    namespace: {{ .VeleroNamespaceName }}
    97  spec:
    98    backupName: {{ .VeleroBackupName }}
    99    includedNamespaces:
   100      - verrazzano-logging
   101    labelSelector:
   102      matchLabels:
   103        opster.io/opensearch-cluster: opensearch
   104    restorePVs: false
   105    hooks:
   106      resources:
   107        - name: {{ .VeleroOpensearchHookResourceName }}
   108          includedNamespaces:
   109            - verrazzano-logging
   110          labelSelector:
   111            matchLabels:
   112              statefulset.kubernetes.io/pod-name: opensearch-es-master-0
   113          postHooks:
   114            - init:
   115                timeout: 30m
   116                initContainers:
   117                  - args:
   118                      - /usr/share/opensearch/bin/verrazzano-backup-hook --operation=pre-restore --velero-backup-name={{ .VeleroBackupName }}
   119                    command:
   120                      - sh
   121                      - -c
   122                    image: iad.ocir.io/odsbuilddev/sandboxes/saket.m.mahto/opensearch-security:latest
   123                    imagePullPolicy: Always
   124                    name: pre-hook
   125            - exec:
   126                container: opensearch
   127                command:
   128                  - /usr/share/opensearch/bin/verrazzano-backup-hook
   129                  - -operation
   130                  - restore
   131                  - -velero-backup-name
   132                  - {{ .VeleroBackupName }}
   133                waitTimeout: 30m
   134                execTimeout: 30m
   135                onError: Fail`
   136  
   137  // EsQueryBody template for opensearch query
   138  const EsQueryBody = `
   139  {
   140  	"query": {
   141    		"terms": {
   142  			"_id": ["{{ .BackupIDBeforeBackup }}"]
   143    		}
   144  	}
   145  }
   146  `
   147  
   148  // RancherUserTemplate template body for creating rancher test user
   149  const RancherUserTemplate = `
   150  {
   151    "description":"Automated Tests", 
   152    "mustChangePassword":false, 
   153    "enabled": true,
   154    "name": {{ .FullName }}, 
   155    "password": {{ .Password }}, 
   156    "username": {{ .Username }}
   157  }
   158  `
   159  
   160  // RancherBackup template for creating rancher backup object.
   161  const RancherBackup = `
   162  ---
   163  apiVersion: resources.cattle.io/v1
   164  kind: Backup
   165  metadata:
   166    name: {{ .RancherBackupName }}
   167  spec:
   168    storageLocation:
   169      s3:
   170        credentialSecretName: {{ .RancherSecretData.RancherSecretName }}
   171        credentialSecretNamespace: {{ .RancherSecretData.RancherSecretNamespaceName }}
   172        bucketName: {{ .RancherSecretData.RancherObjectStoreBucketName }}
   173        folder: rancher-backup
   174        region: {{ .RancherSecretData.RancherBackupRegion }}
   175        endpoint: {{ .RancherSecretData.RancherObjectStorageNamespaceName }}.compat.objectstorage.{{ .RancherSecretData.RancherBackupRegion }}.oraclecloud.com
   176    resourceSetName: rancher-resource-set
   177  `
   178  
   179  // RancherRestore template for creating rancher restore object.
   180  const RancherRestore = `
   181  ---
   182  apiVersion: resources.cattle.io/v1
   183  kind: Restore
   184  metadata:
   185    name: {{ .RancherRestoreName }}
   186  spec:
   187    backupFilename: {{ .BackupFileName }}
   188    storageLocation:
   189      s3:
   190        credentialSecretName: {{ .RancherSecretData.RancherSecretName }}
   191        credentialSecretNamespace: {{ .RancherSecretData.RancherSecretNamespaceName }}
   192        bucketName: {{ .RancherSecretData.RancherObjectStoreBucketName }}
   193        folder: rancher-backup
   194        region: {{ .RancherSecretData.RancherBackupRegion }}
   195        endpoint: {{ .RancherSecretData.RancherObjectStorageNamespaceName }}.compat.objectstorage.{{ .RancherSecretData.RancherBackupRegion }}.oraclecloud.com
   196  `
   197  
   198  const VeleroMySQLBackup = `
   199  ---
   200  apiVersion: velero.io/v1
   201  kind: Backup
   202  metadata:
   203    name: {{ .VeleroMysqlBackupName }}
   204    namespace: {{ .VeleroNamespaceName }}
   205  spec:
   206    includedNamespaces:
   207      - keycloak  
   208    defaultVolumesToRestic: true
   209    storageLocation: {{ .VeleroMysqlBackupStorageName }}
   210    hooks:
   211      resources:
   212        - 
   213          name: {{ .VeleroMysqlHookResourceName }}
   214          includedNamespaces:
   215            - keycloak
   216          labelSelector:
   217            matchLabels:
   218              app: mysql
   219          pre:
   220            - 
   221              exec:
   222                container: mysql
   223                command:
   224                  - bash
   225                  - /etc/mysql/conf.d/mysql-hook.sh
   226                  - -o backup
   227                  - -f {{ .VeleroMysqlBackupName }}.sql
   228                onError: Fail
   229                timeout: 5m`
   230  
   231  const VeleroMySQLRestore = `
   232  ---
   233  apiVersion: velero.io/v1
   234  kind: Restore
   235  metadata:
   236    name: {{ .VeleroMysqlRestore }}
   237    namespace: {{ .VeleroNamespaceName }}
   238  spec:
   239    backupName: {{ .VeleroMysqlBackupName }}
   240    includedNamespaces:
   241      - keycloak 
   242    restorePVs: false
   243    hooks:
   244      resources:
   245        - name: {{ .VeleroMysqlHookResourceName }}
   246          includedNamespaces:
   247            - keycloak
   248          labelSelector:
   249            matchLabels:
   250              app: mysql
   251          postHooks:
   252            - exec:
   253                container: mysql
   254                command:
   255                  - bash
   256                  - /etc/mysql/conf.d/mysql-hook.sh
   257                  - -o restore
   258                  - -f {{ .VeleroMysqlBackupName }}.sql
   259                waitTimeout: 5m
   260                execTimeout: 5m
   261                onError: Fail`
   262  
   263  const InnoDBBackupS3 = `
   264  ---
   265  apiVersion: mysql.oracle.com/v2
   266  kind: MySQLBackup
   267  metadata: 
   268    name: {{ .InnoDBBackupName }}
   269    namespace: {{ .InnoDBNamespaceName }}
   270  spec: 
   271    clusterName: {{ .InnoDBClusterName }}
   272    backupProfile: 
   273        name: {{ .InnoDBBackupProfileName}}
   274        dumpInstance: 
   275          storage: 
   276            s3: 
   277              bucketName: {{ .InnoDBBackupObjectStoreBucketName }}
   278              config: {{ .InnoDBBackupCredentialsName }}
   279              endpoint: "https://{{ .InnoDBObjectStorageNamespaceName }}.compat.objectstorage.{{ .InnoDBBackupRegion }}.oraclecloud.com"
   280              prefix: {{ .InnoDBBackupStorageName }}
   281              profile: default`
   282  
   283  const InnoDBBackupOci = `
   284  ---
   285  apiVersion: mysql.oracle.com/v2
   286  kind: MySQLBackup
   287  metadata: 
   288    name: {{ .InnoDBBackupName }}
   289    namespace: {{ .InnoDBNamespaceName }}
   290  spec: 
   291    clusterName: {{ .InnoDBClusterName }}
   292    backupProfile: 
   293        name: {{ .InnoDBBackupProfileName}}
   294        dumpInstance: 
   295          storage:
   296            ociObjectStorage:
   297              prefix: {{ .InnoDBBackupStorageName }}
   298              bucketName: {{ .InnoDBBackupObjectStoreBucketName }}
   299              credentials: {{ .InnoDBBackupCredentialsName }}`