Skip to content

Commit b38ee10

Browse files
Merge pull request #640 from fmount/cache_kuttl
Run image_cache script kuttl test
2 parents 32b669e + 75c0edd commit b38ee10

9 files changed

Lines changed: 193 additions & 415 deletions

File tree

config/samples/distributed_image_import/dist-image-import.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ $glance --os-image-url "http://${REPLICA}""1.$DOMAIN:9292" image-import --import
7171
$glance image-list
7272
status=$($glance image-show "$ID" | awk '/status/{print $4}')
7373
printf "Image Status: %s\n" "$status"
74+
75+
# Stage 5 - Clean up images
76+
openstack image list -c ID -f value | xargs -n 1 openstack image delete
77+
7478
if [[ $status == "active" ]]; then
7579
exit 0
7680
fi

config/samples/image_cache/cache_and_delete_image.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#
2222
# export PASSWORD=12345678
2323

24+
set -x
25+
2426
TIME=3
2527
CACHE_TIME=6
2628
DOMAIN=${DOMAIN:-"glance-default-single.openstack.svc"}
@@ -29,7 +31,6 @@ IMAGE_NAME="myimage"
2931
KEYSTONE=$(awk '/auth_url/ {print $2}' "/etc/openstack/clouds.yaml")
3032
ADMIN_PWD=${1:-12345678}
3133
ADMIN_USER=${ADMIN_USER:-"admin"}
32-
DEBUG=0
3334

3435
# this method uses distributed image import and relies on the glance cli
3536
glance="glance --os-auth-url ${KEYSTONE} \
@@ -42,7 +43,7 @@ glance="glance --os-auth-url ${KEYSTONE} \
4243
exec 0<&-
4344

4445
# Build a dodgy image
45-
echo This is a dodgy image > "${IMAGE_NAME}"
46+
echo This is a dodgy image > $HOME/"${IMAGE_NAME}"
4647

4748
# Stage 0 - Delete any pre-existing image
4849
openstack image list -c ID -f value | xargs -n 1 openstack image delete
@@ -67,6 +68,7 @@ $glance --verbose image-create \
6768
--container-format bare \
6869
--name "${IMAGE_NAME}" \
6970
--file myimage
71+
sleep "$TIME"
7072
ID=$($glance image-list | awk -v img=$IMAGE_NAME '$0 ~ img {print $2}')
7173
echo "Image ID: $ID"
7274
sleep "$TIME"

config/samples/layout/split/glance_v1beta1_glance.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ spec:
1919
glanceAPIs:
2020
default:
2121
replicas: 1
22+
imageCache:
23+
size: 2G
2224
storage:
2325
storageClass: local-storage
2426
storageRequest: 10G
Lines changed: 86 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
#
21
# Check for:
32
# - Glance CR
4-
# - GlanceAPI glance-single CR
5-
# - GlanceAPI glance-api StatefulSet
3+
# - GlanceAPI glance-external CR
4+
# - GlanceAPI glance-internal CR
65
# - glance-api Pod
76
# - glance-cleaner CronJob
87
# - glance-pruner CronJob
@@ -18,23 +17,36 @@ spec:
1817
databaseAccount: glance
1918
glanceAPIs:
2019
default:
21-
replicas: 1
22-
type: "single"
23-
imageCache:
24-
cleanerScheduler: '*/30 * * * *'
25-
prunerScheduler: 1 0 * * *
26-
size: 2G
20+
replicas: 2
2721
secret: osp-secret
2822
storage:
2923
storageRequest: 10G
3024
---
3125
apiVersion: glance.openstack.org/v1beta1
3226
kind: GlanceAPI
3327
metadata:
34-
name: glance-default-single
28+
name: glance-default-external
3529
spec:
36-
apiType: single
37-
replicas: 1
30+
apiType: external
31+
databaseAccount: glance
32+
passwordSelectors:
33+
service: GlancePassword
34+
replicas: 2
35+
imageCache:
36+
cleanerScheduler: '*/30 * * * *'
37+
prunerScheduler: 1 0 * * *
38+
size: 2G
39+
---
40+
apiVersion: glance.openstack.org/v1beta1
41+
kind: GlanceAPI
42+
metadata:
43+
name: glance-default-internal
44+
spec:
45+
apiType: internal
46+
databaseAccount: glance
47+
passwordSelectors:
48+
service: GlancePassword
49+
replicas: 2
3850
imageCache:
3951
cleanerScheduler: '*/30 * * * *'
4052
prunerScheduler: 1 0 * * *
@@ -48,38 +60,69 @@ metadata:
4860
status:
4961
phase: Running
5062
---
63+
apiVersion: v1
64+
kind: PersistentVolumeClaim
65+
metadata:
66+
annotations:
67+
image-cache: "true"
68+
labels:
69+
component: glance-api
70+
glanceAPI: glance-default-external
71+
owner: glance-default-external
72+
service: glance
73+
name: glance-cache-glance-default-external-api-0
74+
spec:
75+
accessModes:
76+
- ReadWriteOnce
77+
resources:
78+
requests:
79+
storage: 2G
80+
81+
---
82+
apiVersion: v1
83+
kind: PersistentVolumeClaim
84+
metadata:
85+
annotations:
86+
image-cache: "true"
87+
labels:
88+
component: glance-api
89+
glanceAPI: glance-default-internal
90+
owner: glance-default-internal
91+
service: glance
92+
name: glance-cache-glance-default-internal-api-0
93+
spec:
94+
accessModes:
95+
- ReadWriteOnce
96+
resources:
97+
requests:
98+
storage: 2G
99+
---
51100
apiVersion: batch/v1
52101
kind: CronJob
53102
metadata:
54-
name: glance-cache-glance-default-single-0-cleaner
103+
name: glance-cache-glance-default-external-api-0-cleaner
55104
spec:
105+
concurrencyPolicy: Forbid
106+
failedJobsHistoryLimit: 1
56107
jobTemplate:
57108
metadata:
58109
labels:
59110
component: glance-api
60-
glanceAPI: glance-default-single
61-
owner: glance-default-single
111+
glanceAPI: glance-default-external
112+
owner: glance-default-external
62113
service: glance
63114
spec:
115+
completions: 1
116+
parallelism: 1
64117
template:
65118
spec:
66-
affinity:
67-
podAffinity:
68-
requiredDuringSchedulingIgnoredDuringExecution:
69-
- labelSelector:
70-
matchExpressions:
71-
- key: glanceAPI
72-
operator: In
73-
values:
74-
- glance-default-single
75-
topologyKey: kubernetes.io/hostname
76119
containers:
77120
- args:
78121
- -c
79122
- /usr/bin/glance-cache-cleaner --config-dir /etc/glance/glance.conf.d
80123
command:
81124
- /bin/bash
82-
name: glance-cache-glance-default-single-0-cleaner
125+
name: glance-cache-glance-default-external-api-0-cleaner
83126
volumeMounts:
84127
- mountPath: /etc/glance/glance.conf.d
85128
name: image-cache-config-data
@@ -89,47 +132,42 @@ spec:
89132
volumes:
90133
- name: image-cache-config-data
91134
secret:
135+
defaultMode: 420
92136
items:
93137
- key: 00-config.conf
94138
path: 00-config.conf
95-
secretName: glance-default-single-config-data
139+
secretName: glance-default-external-config-data
96140
- name: glance-cache
97141
persistentVolumeClaim:
98-
claimName: glance-cache-glance-default-single-0
142+
claimName: glance-cache-glance-default-external-api-0
99143
schedule: '*/30 * * * *'
144+
successfulJobsHistoryLimit: 3
145+
suspend: false
100146
---
101147
apiVersion: batch/v1
102148
kind: CronJob
103149
metadata:
104-
name: glance-cache-glance-default-single-0-pruner
150+
name: glance-cache-glance-default-external-api-0-pruner
105151
spec:
152+
concurrencyPolicy: Forbid
153+
failedJobsHistoryLimit: 1
106154
jobTemplate:
107155
metadata:
108156
labels:
109157
component: glance-api
110-
glanceAPI: glance-default-single
111-
owner: glance-default-single
158+
glanceAPI: glance-default-external
159+
owner: glance-default-external
112160
service: glance
113161
spec:
114162
template:
115163
spec:
116-
affinity:
117-
podAffinity:
118-
requiredDuringSchedulingIgnoredDuringExecution:
119-
- labelSelector:
120-
matchExpressions:
121-
- key: glanceAPI
122-
operator: In
123-
values:
124-
- glance-default-single
125-
topologyKey: kubernetes.io/hostname
126164
containers:
127165
- args:
128166
- -c
129167
- /usr/bin/glance-cache-pruner --config-dir /etc/glance/glance.conf.d
130168
command:
131169
- /bin/bash
132-
name: glance-cache-glance-default-single-0-pruner
170+
name: glance-cache-glance-default-external-api-0-pruner
133171
volumeMounts:
134172
- mountPath: /etc/glance/glance.conf.d
135173
name: image-cache-config-data
@@ -139,31 +177,14 @@ spec:
139177
volumes:
140178
- name: image-cache-config-data
141179
secret:
180+
defaultMode: 420
142181
items:
143182
- key: 00-config.conf
144183
path: 00-config.conf
145-
secretName: glance-default-single-config-data
184+
secretName: glance-default-external-config-data
146185
- name: glance-cache
147186
persistentVolumeClaim:
148-
claimName: glance-cache-glance-default-single-0
149-
schedule: '1 0 * * *'
150-
---
151-
apiVersion: v1
152-
kind: PersistentVolumeClaim
153-
metadata:
154-
annotations:
155-
image-cache: "true"
156-
pv.kubernetes.io/bind-completed: "yes"
157-
pv.kubernetes.io/bound-by-controller: "yes"
158-
labels:
159-
component: glance-api
160-
glanceAPI: glance-default-single
161-
owner: glance-default-single
162-
service: glance
163-
name: glance-cache-glance-default-single-0
164-
spec:
165-
accessModes:
166-
- ReadWriteOnce
167-
resources:
168-
requests:
169-
storage: 2G
187+
claimName: glance-cache-glance-default-external-api-0
188+
schedule: 1 0 * * *
189+
successfulJobsHistoryLimit: 3
190+
suspend: false

test/kuttl/tests/glance_image_cache/01-deploy_glance.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ apiVersion: kuttl.dev/v1beta1
22
kind: TestStep
33
commands:
44
- script: |
5-
oc kustomize ../../../../config/samples/layout/single | oc apply -n $NAMESPACE -f -
5+
oc kustomize ../../../../config/samples/layout/split | oc apply -n $NAMESPACE -f -
6+
- script: |
7+
oc patch Glance -n $NAMESPACE glance --type='json' -p='[{"op": "replace", "path": "/spec/glanceAPIs/default/replicas", "value":2}]'
8+
- script: |
9+
oc -n $NAMESPACE kustomize --load-restrictor LoadRestrictionsNone ../../../../config/samples/openstackclient | oc -n $NAMESPACE apply -f -

0 commit comments

Comments
 (0)