Skip to content

Commit

Permalink
Add terraform-provider-huaweicloud-acceptance-test-fusioncloud job
Browse files Browse the repository at this point in the history
This change add the job of
terraform-provider-huaweicloud-acceptance-test-fusioncloud

Closes-Bug: # theopenlab/openlab#130
  • Loading branch information
openlab committed Dec 5, 2018
1 parent f0d4cad commit 64c38ee
Show file tree
Hide file tree
Showing 6 changed files with 254 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
- hosts: all
become: yes
roles:
- role: export-cloud-openrc
vars:
cloud_name: 'fusioncloud'
tasks:
- name: Clean up resources terraform-provider-huaweicloud against fusioncloud tests
shell:
cmd: |
set -e
set -x
shopt -s expand_aliases
alias openstack="openstack --insecure"
openstack server delete `openstack server list -f value -c ID -c Name |grep instance_1 |awk '{ print $1 }'` || true
openstack volume delete `openstack volume list -f value -c ID -c Name |grep -E 'volume_1|vol_1' |awk '{ print $1 }'` || true
openstack port delete `openstack port list -f value -c ID -c Name |grep port_1 |awk '{ print $1 }'` || true
openstack subnet delete `openstack subnet list -f value -c ID -c Name |grep -E 'tf_test_subnet|subnet_1' |awk '{ print $1 }'` || true
openstack network delete `openstack network list -f value -c ID -c Name |grep network_1 |awk '{ print $1 }'` || true
openstack router delete `openstack router list -f value -c ID -c Name |grep -E 'vpc_test|terraform-testacc-vpc-data-source' |awk '{ print $1 }'` || true
openstack image delete `openstack image list -f value -c ID -c Name |grep CirrOS-tf |awk '{ print $1 }'` || true
openstack keypair delete `openstack keypair list -f value -c Name |grep kp_1` || true
openstack security group delete `openstack security group list -f value -c ID -c Name |grep -E 'sg_|secgroup_1' |awk '{ print $1 }'` || true
executable: /bin/bash
environment: '{{ global_env }}'
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
- hosts: all
become: yes
roles:
- config-golang
- role: export-cloud-openrc
vars:
cloud_name: 'fusioncloud'
tasks:
- name: workaround for fusioncloud domain name mapping
shell:
cmd: |
cat << EOF >> /etc/hosts
58.255.93.185 iam-apigateway-proxy.fusioncloud.huawei.com
58.255.93.185 iam-cache-proxy.fusioncloud.huawei.com
58.255.93.185 ecs.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 evs.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 vpc.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 bms.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 ccs.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 as.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 ims.shenzhen-1.fusioncloud.huawei.com
58.255.93.185 rts.shenzhen-1.fusioncloud.huawei.com
EOF
executable: /bin/bash

- name: Run acceptance tests with terraform-provider-huaweicloud against fusioncloud
shell:
cmd: |
set -e
set -o pipefail
set -x
apt-get install python-pip -y
pip install -U python-openstackclient
shopt -s expand_aliases
alias openstack="openstack --insecure"
export OS_SHARE_NETWORK_ID="foobar"
export OS_FLAVOR_ID_RESIZE='rds.s1.medium'
export OS_FLAVOR_ID='rds.c2.medium'
export OS_POOL_NAME="admin_external_net"
export OS_EXTGW_ID=`openstack network list -f value |grep admin_external_net | awk -F ' ' '{print $1}'`
export OS_IMAGE_NAME="cirros-0.4.0-x86_64-disk"
export OS_IMAGE_ID=$(openstack image show cirros-0.4.0-x86_64-disk -f value -c id)
export OS_NETWORK_NAME="openlab-jobs-net"
export OS_NETWORK_ID="$(openstack network show openlab-jobs-net -f value -c id)"
export OS_VPC_ID="$(openstack router show openlab-jobs-vpc -f value -c id)"
export OS_INSECURE=true
# can only set one of OS_DOMAIN_ID and OS_DOMAIN_NAME
unset OS_DOMAIN_ID
# Enable ULB(Neutron LB) tests
export OS_ULB_ENVIRONMENT=1
# workaround
sed -i s/Sys-default/default/ huaweicloud/resource_huaweicloud_compute_instance_v2.go
sed -i '/if OS_ACCESS_KEY/,+2d' huaweicloud/provider_test.go
sed -i '/if OS_SECRET_KEY/,+2d' huaweicloud/provider_test.go
unset OS_ACCESS_KEY
unset OS_SECRET_KEY
# Run test 100 testcases at a time
exitcode=0
alltestcases=`go test ./huaweicloud/ -v -list 'Acc'`
testcases=`echo "$alltestcases" | sed '$d' | grep -v -e Kms -e Rds -e RDS -e SFS -e SMN -e DNS -e ELB -e Nat -e Images`
# Add OS_DEBUG=1 TF_LOG=debug flags for debuging
echo "$testcases" | xargs -t -n100 sh -c 'OS_DEBUG=1 TF_LOG=debug TF_ACC=1 go test ./huaweicloud/ -v -timeout 180m -run $(echo "$@" | tr " " "|")' argv0 2>&1 | tee -a $TEST_RESULTS_TXT || exitcode=$?
# Run image tests in a separate process to avoid messy output
imagetestcases=`echo "$alltestcases" | sed '$d' | grep Images`
echo "$imagetestcases" | xargs -t -n100 sh -c 'TF_LOG=debug TF_ACC=1 go test ./huaweicloud/ -v -timeout 180m -run $(echo "$@" | tr " " "|")' argv0 2>&1 | tee -a $TEST_RESULTS_TXT || exitcode=$?
exit $exitcode
executable: /bin/bash
chdir: '{{ zuul.project.src_dir }}'
environment: '{{ global_env }}'
19 changes: 19 additions & 0 deletions roles/export-cloud-openrc/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,25 @@
no_log: yes
when: cloud_name == 'vexxhost'

- name: Set fact for fusioncloud openrc
set_fact:
openrc:
OS_PASSWORD: '{{ fusioncloud_credentials.password }}'
OS_AUTH_TYPE: '{{ fusioncloud_credentials.auth_type }}'
OS_AUTH_URL: '{{ fusioncloud_credentials.auth_url }}'
OS_IDENTITY_API_VERSION: '{{ fusioncloud_credentials.identity_api_version }}'
OS_DOMAIN_NAME: '{{ fusioncloud_credentials.domain_name }}'
OS_PROJECT_NAME: '{{ fusioncloud_credentials.project_name}}'
OS_REGION_NAME: '{{ fusioncloud_credentials.region_name}}'
OS_TENANT_NAME: '{{ fusioncloud_credentials.project_name }}'
OS_USERNAME: '{{ fusioncloud_credentials.user_name }}'
OS_DOMAIN_ID: '{{ fusioncloud_credentials.domain_id }}'
OS_AVAILABILITY_ZONE: '{{ fusioncloud_credentials.availability_zone }}'
OS_ACCESS_KEY: '{{ fusioncloud_credentials.access_key }}'
OS_SECRET_KEY: '{{ fusioncloud_credentials.secret_key }}'
no_log: no
when: cloud_name == 'fusioncloud'

- name: Merge openrc into golang env
set_fact:
global_env: '{{ global_env | combine(openrc) }}'
Expand Down
12 changes: 12 additions & 0 deletions zuul.d/jobs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1015,3 +1015,15 @@
cloud_name: telefonica
secrets:
- telefonica_credentials

# terraform-provider-huaweicloud acceptance tests against FusionCloud
- job:
name: terraform-provider-huaweicloud-v1.2.0-acceptance-test-fusioncloud
parent: golang-test
description: |
Run acceptance tests of terraform-provider-huaweicloud repo against fusioncloud
run: playbooks/terraform-provider-huaweicloud-acceptance-test-fusioncloud/run.yaml
post-run: playbooks/terraform-provider-huaweicloud-acceptance-test-fusioncloud/post.yaml
secrets:
- fusioncloud_credentials
override-checkout: v1.2.0
7 changes: 7 additions & 0 deletions zuul.d/projects.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -164,3 +164,10 @@
- manageiq-providers-openstack-test-orange
# NOTES: Telefonica account is disable
# - manageiq-providers-openstack-test-telefonica

- project:
name: terraform-providers/terraform-provider-huaweicloud
periodic:
jobs:
- terraform-provider-huaweicloud-v1.2.0-acceptance-test-fusioncloud:
branches: master
116 changes: 116 additions & 0 deletions zuul.d/secrets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -686,3 +686,119 @@
leeJGp4vFVD636c3I6AwkJZGFZgpS1a0UblCBn4xT+yzUc9kvAqdZjwMwmBKnIFyKZvVu
je39HPT7L37WBuiPhWUu0Y5V0gfjSgWbauGDSAp749AQzmaweTECxM/jZOt9Nxye++6Mj
KPdF0X8oXsFbLXk2Ur2eKhstYZ3nGlKYXew4hslZXVDFsmSypsxJmJGX9GaXIg=

- secret:
name: fusioncloud_credentials
data:
auth_type: password
identity_api_version: "3"
auth_url: !encrypted/pkcs1-oaep
- kzN3x6sIoiOAhy80SKQEVwjMSlCOsPVv5SiGf7tMT5apJzSyeTGQdMOZPuBPqHi3Uc22q
0AeWfugnq449hMX8LuIrwbExvVALI1xkuq6iynJdo0MkCsjQvnIzfIdDHrT/9zNedKvhV
WBIZInHJq8zmqfQkhTzYXWeYzLgXIQw1komSYVCEs9w+8cYBhYD2QjWh1h/+0mw5P6jGP
UdIeF9gZxujmF+BpNaP8qSiwq3vFHod5bTT66+Ny53x7IyK45efCbM6znyEFilLy8cKN8
sd6BBDbAALA36gjK96TMeJbK3Zc1wCwuUMZtKgLumA8Uznys98/n57QAlnQYtxNl4rW0c
U1R+byG9TyfoWi7h0gm2XMmKVprWvwFb8uBZkkcrWtr6VssT7bFZMjyeq/Abmk1gka3C7
bC71oX1dLeGO/EMr0KKkdXMlZmKNkw+mhTQ1j68F42u/VhLnRZCdeEoEzvbyoz/pfACv/
Jggr7xZpIMbk2YGknjfEdyPqHjqblysAXh7uagin8dVwYFZKTDX3Ui4y1ENDEuh2U8w+C
932r0VPiZSTLzEM0Vf0LgXHsIqCsoEUNeHqK/Or6yAd6aRlRPIgYQN4DO/Rt+ftegXeEL
AO0Fno8Rxx6yPBWX+AgDNgZofkoNkXXsE6p2UFBoA6EPF3yTTWC4faySroHgOM=
password: !encrypted/pkcs1-oaep
- fKVcpGYWriMo8cbmn8IEEE3eBvXP+3qMoFqu/9LmraWOJHmq/UmIov0fSrDF+bm9IWgcs
8n5a/dPyWS0bU4+AEMZhMY/1Jd1BvsAcIrdZhLzPDkV6dhhMQLeXD5Z4g/yLMEthoNrBq
t9xcuShhAe31ItRAjdYf7OyX7w+Jn239sokcvi0CRO6afqVxpHQdj/ZnIfRlVe85jIpJV
MpWNSpnwnNG/CK11TwzhdHa7cPLs5y1ByqJJS8bGHEiZelsbxF9IZqRcLTzH55Bo+OWau
bu+XDPmDSuUa6siJPYNpdK6h0+VW9RsZCVJZFjb/L2RG54etWpN8BAnkzJrmiGtTI0WNw
7gGBvGOCLlBObbw1dkvgzWIQ4bGU/PqptC9uteww2aVD0V9Xi4vn2SpqVMnFgLtZp5FlD
7bRxYxDDtQFBumXp6UJoC+HgRQ97PuyDTg9hhQGzQp9UZO4Zz2T4oyWCJky6aYpU7wJwC
5mA3sU4N/HR/xCxIdsEEava48CGzF5jqttPKNhajgT5uhChUrkgDPniXOyBHXP+oOVsyC
NCbXz/VUYgbITKR8rEsWiDu8/QtX9+eRDLqLuRx1LpwUCmHIyAs6Do55gDiiaq8kqziYU
0bFjEo9O0RLjBNe7bkx6xIBZxshzlcpiL1Eogu8sdZPl+JiemmmChe1jEDVYvk=
domain_name: !encrypted/pkcs1-oaep
- T38DjEOgXEY3DCudogn8pM34NKoIBPJoWVm3yHiJhUVdu2nf3zBCAKh7yR6THvG5HOm6j
ZdHWTHJ8TFBxKxFDMZ2d8j5jZke4b0FXw05sqPjWP8G7Pxz90Mt+5/uvYzKhQKKia9Xqr
O/+WdKfZM7cW2L/lsPcI4KBgtx+OYMdh7YkHpguZ5BKIXP0ZhKZoCwStqc129Y4SgzQn7
F4SwSGpPjk2Vtl6hcF5hPPMGm5MSiNM0hQwPXMmyJKGkeyIBrN102jc53Mql003tW7dIX
XCV0YyfmlxS81j06Fbsn58QFSt0ntWRaBvJfQV9G/i9IMKtJBtxfkoYo1diYzFZqNW+SJ
bT6tKhICYc3XOb4tkZvncTS2ah4fSso3IL1nCFJJvJ+ryjexxOfUYKRb9H5rrt3VcngJS
P/a4Qx3MehNyvCsu5dmP6cPDcF9Ccawe//TsEiF42ryplN6hcoZHFmGek53aC9tHVI0W7
ZyByiWCzLqIw1dCePWKmdRd52Xqoof2P3IzQG4Lj0vzvHfJ3r8qKloT9MrmC3XJJwQ1cv
tQ8Py+13zoOKSnZ9yQKnfz1gI4l1iK6Am9SN5NMt3Xz1Q7xdV9w9UUWw3AvO0bHaZ2hN5
DHxiO49AoLdfpTRHeok2VnDRxfcdc/qhOUGgLrd6Y9e1GP/eYyf75FiDA5qvxY=
project_name: !encrypted/pkcs1-oaep
- LLSpOIsxCdUlNtoPX2MOPx85cNnEMefuqMWjtXpHET58CeRgkSEK9HYLoP0aRKUV+vyfp
7pQqkBvU229Qnl7eFFUsqQ6JZGcjWe163lA+jkEMJrwtr30U2VjxMtmF1QBrD5H7UaaHy
RP9wAneoeL9YOfFizCgz3y4AcfBCzvnSTrTCDC3c3rSHjnkUddJglDFqwzv+HT9SjUqwV
TU3O3mRoVpQCkqfsDQ8nleIaOc/wOldFeU9aRu2lA6afPidah6aLe0uz2iHh1kIR4eayw
QsdEOI+2FiOjxP17kM5E76KXSC2wb22TySPzEBtAJ6uuJroW1QChCDPoirN0W3P9Fcvu/
6YHirzUbBj6r/Gx20/OgxBPnxUuUFouZfDkAciUxiis3XjAbXkVOvQxnyAEhmNB/WycfF
MV74FQ7OrKuTtNVWw2HSKxa0xFBYRaAYZqDDUZt5Z0aljdvMQuXPNO4d4nNn9YuQzOzC2
IbbcUPwUgnrIMMWC2icOKpy/q2YXvz9mfbtHtxuFBVMXDLk/ijBjTYsYi6LwmBMxJy15f
O2PFAKmxvdCODzdB/s0sS6wnwSO0kbv/PpPrk4WJ4iZLDwBpDeV4hg8mBF+fAZkTzwJyx
R/SyIqIyycqboDBIW0ZSrLaGJeevu/akJN2IwFB8oU0/Ygqwrl++xx9iufn4gw=
region_name: !encrypted/pkcs1-oaep
- av53WtB7hQHhlkhONd7gDNgqeFbc1hxhIX2o2wO5YZ+sqxpAOXAZkop0XTwJhHSehsk+Q
yKUQ2/lOjOVotq9RO+5k/SXz0kOpxJHMTCniQhQUk0kfsU3+58HkvA+snsLNqneTOu0iW
hIyIxps4ufDSl5KURNvtAZ9B7Le+OCG+DxwRu2Fb5XYA1ZqqEMkegX2rZ9siyRBRGU5Mp
cwVZ/u+P/7KwO1kWcUDE3ipHDEIS4Dmg+U8ncpFiE2/5icoQ2pE6bJGEWkSjpy3ibH78B
2odXS40O+w0P06rGPZt1eW27ODq92sdGaAsKr9cp4SmRCBEwZ+gDGc15XZTU8lcCiK5hC
o8icqqBGq8+rcSXezBc85+41g1j9gXMMqxumYeJQS5JqM1hRd9q2Hqo85+yEJVQmrok5a
/ixqlNRrypNY0cej1GOdascGOY6yvyPF8OpLOuF3lcr5g6nI4LI7zOgC1g1LkI66pngJi
Z9h6L5LFg8Ji172MjFOrA5xdfBlkUjj5Qi0zSSBlvi5TofBFlOW0ErYxPJZukE8SFyMY3
68ISCVXs97lWMo/4SYfJ3BNiLKfrLh2MSTQGe43fu/imOyt+2vVIA5Rk1euCmFNCg1ODp
N/z74XY7PxxDf2qZKrS63PzGd9V5k0bKDiArKWYGSXUanaJcm5d0VtfsslQ4KA=
user_name: !encrypted/pkcs1-oaep
- FPN7PCtcrvYSQSxyShylD0wJGHE16GJpLpmRmv5tMbKxiF5vMI6pKL/WB6ozzhmBxBmU4
XRoX2Oi0GNLcrRolWgbAwM6Ks8IXsmeGkZcum2iaJyrlgZSd9Dd/rZu9R0V5puSn0Z896
2BBErm1H+ClXhG3+zE61PfB8jNK4AKkKoevedEZBi8DUz1LpLMbkl9/cazcUZrQLquoMA
oJJGoZy6yn1fkS9Av38ET9hvDep09jXoD7AUUIR1acAKfa19qEaNVHtGNpk7AXaqL2gar
Rgn9iUEfAfac48uj6J2EC+MHuiXEM1OhQP0p97dBqyBg0Vc0+StvNXYMWBHFswdPZH8Y1
Inuw6oul5pBaE9h7V5kH/ZGdF+vdPAfatJptZOBjwwL+h+rM93ZEMRE3YpPz3i88qq2JQ
EX02lBf0vZsZN3QnL9cEnUYelJxPm4mTWF9Ih1qbY8ADP/SRMxCmc6TfIsDoWbYF5TxdQ
SvBPKNwYcs0nOcFWKWqoxgQVyAEttuRXZMoLNmE3auwcXLwTvpCObdVzssse4bT9K4/Mi
cN2qLamC03rnHT2qNSsCjYSdzHMIqgfSrmEyvW+YrCtfOuHzMJhEHZ1mKECR7oqqYxTEp
dp6DsJv8u8laDcUlZkHCCvnDJmvZ1H1mx9Pk0BYjxvyTfSc6VShuUBW/WapBP4=
domain_id: !encrypted/pkcs1-oaep
- i/Igj2M2jUTnQkU6CpoZcjrKRAzxLH3LqcgQIhq2YXySS8Ml2cCYNEvw1R+520J/BekKQ
imG0eUabBe5/VJae5iV2oo8VK+XNJZ0tYeZfNgfLPFGxes7C0rQGjQCM7KnWgYOVFizcI
46wcB39j8EG2M77B2yR6JlXWjE+NxZZgW9XYxu7zb8CQKnWZJsCfG5NcmQmFjZnVqOQMm
Co/oTLjrBoRIgcsZWftT7JivcQ9qeB17Mr0qFgGG52ggd1n3tM2hiPjYqa2OlMN0tqyH0
CJmelx0QAgW5TEX8O0GLcrhDKsHBWosA7tmGu1KsLZSvVHsAu/3mMv3TPq2m7K21WfVOo
NgfPogUjUrwB4MJF0qlTlXWHedtmHeq+4slCor3PpXkFpf+ipzxGninM2cmYGPsKco8xC
UTfvl68OPb/1pdMCLDl3wN8T5T36WhSn4pB+AyVXfubZD8DvKCLXmEUwvcvqTTwF6sLlt
WhteMYbgXzBEXN0m52ZW7L2vskMx9QrXhO4zJf2+mOH27K7TjORF7ZOEL+tfEw9/9KgdC
2DHhFH+8eYqB0+APIBvAfP1eItzwyKMkUxqp08Ff2apigKsL38an49Muc7i7ZyiHeLifb
MCNywPEoN8HLGQWDK9+73lb06TOfq6YuvgEI8n0Z3bvepearG+PmSWdSIprnlU=
availability_zone: !encrypted/pkcs1-oaep
- dAVlprNgOW3/DiN3xCAFxbnIljZcWEj1IKeYm8qAwNQsl3WtEiHsjCip2BXyj/ADMXgE4
9AFDorXTxt1tWkG4AWP7DYnNjPAkbF7jdSXRww8nj3jbqN0Rt2GLFAnCsfGxKUrT7L60v
e6WMBbZo2Go90IdCRWGHtjMxkTAKKtbR8U/laAhZDFFIzmsDvMpMtqFktaILOABHDM5XE
0kZElx0huW4UCbiE906wYVrGdr/Wgr0NPAQCPf0FI8+JQzhkeEh2SaCLsUjNMSLHf/EUl
hjR6Xo9xSqNRXXSo9tm3rLz0sH+ZxxlWP9IiHc8TrxGLDhk9eLUfnqwKdu//GlvqHGaSS
Kl+0Q7fZUlwAxpCdl3sFZLvsca1SEjGigFBNxs+Ig7RlWgwXV/DcTaVm22kRMzCteCxfz
tjfXeqKdIcRREmplEGfAii8MocCVryrhpqKSmQMunpl2y6OyMDxgHy5vPhiBwSKNixdrU
D+TftJZpfTifoLp1YgSNJlig0GfSBCSnYjL59NOUZdsT86gCcm7B6yDAeSvRXPEwhZhwk
MS4iUocdMazegfdN4RZOLWvNY5U+WK1WBahB10M7+TkmFbZ8VsxxI3PEuhct2iXlUhtDX
A8bjsrCZVXk4Kajyl2+klQVrlJALD7FJLLHCoMx4+LH1oyRWzn4cobSA/K0DWc=
access_key: !encrypted/pkcs1-oaep
- cDLd7KMsrZNLPh3bAEr4C8wDnl98q0rgZDbdooWD9GW8nguDf7KnNQbIlWEh2IrWMDRCt
dZiKX+SqSdCdZ87f/r+jtoVE0QUK3jPk54JAgYqaD91JCHKh0E/+t4MLtYmKgwy1nv/JO
XyNFUgI8J+dfF4Pp8uFJ4L6CHGwPpaJYQhekv9YZDvUZeK7dD609HubzM7W/E0WJ3BIvQ
m1NIu4rSAijt6espZPnPMvmA68/mAg9gG6wle9D67yUhir5avk3VbJKFQpN6dIdH1pd7i
2Xox3n45StkNl6tYi6K1zoHdVXLLRBZFActKJxjchoeA7udlz291Zmuu9noSRNOXfECe3
jgyxRXk3hlw9WS7vyb+yZjJr8UVV5VlZzdgt0MFEX1BAwhh2F5MJ+LWbyXA4oOzr2tds3
7Fh/7p6HmKnGBiTl9HTz2WTwBikBJcC66Q4iBw91Wq5KCIgMdpv5siPefVqLEDMAUfo6g
96364hDDvhDcPnq4SWfK+SeKoqcckQ6O3j9LsPuc54hc2i+SqohDJ5gfFcf6ljOT0fPHl
tyPVh18C1pTukrOU1Bl/tAzPZ5lETiV6+tgMetemc6uHfXK6A1rux59qJf3waJTDYcckV
pnLNgSWUxDCu72Yw2x/sP7zh58i+xPVethnNVIzfITHmQt9YUJr0G58W9kY2/g=
secret_key: !encrypted/pkcs1-oaep
- LIMsKsfeCyMnBNdZJM3lqjIEHzDvdG/dI6lBiwl+QT1BJjhP1aak8HNTiUXhaXgjazi02
JUFnBCr8E5Z9g27AMfnKl5EQLIu6g4eZhsDjxvX/lIBfAWGavEjf+m9uB7L+DqatXBZcK
IaS6Yx2UkAfdPDNiUaBtrS+QaH7vd2lci8lTTP3KcTE3DZJK93rmTksY6/ZQxBEHxtsYk
wypZ9F2uQ1WSHJbdhT410f1/EGkfmQ1k+2fH8SWm+a300EbAaLUH+LfISpMrPrSHexH97
I72b7jUflipk954VQfb1SfUks1sxrPUvErsr+ENSOI+9z2MqqzaKjiBgtKcj8HYrvfHfz
jjp0evmMTfknpXBIPwi+hIT1D4yFocfGkQcYNmqc5NjSwClBsBBJGMQsVrE0KqkSudoMP
P98ljWKuk4+0hDvHP/PSOWO/WN8IDA/HeMSIE24wuM8205YNIyS5N0wNFb2WJJtjA2swM
HqiA/odm2hHMiw7lh7uVczK+VZIXrtB2G4W7SUmXP7aOn1wuiBNYraPELVfAlHYlsPQlj
Jkqk6acsQd1x5vRFGW5AZsOdiLTD7EOSHbvusEmF+V3/n9tGWABc+w6pz0n8xp5+V/SEv
GAlr1E9/fPkPOlEJSh87XhH8srX9Hh3ZFtuAYXeDwuhv0yf0WifDOz3Sz+kJAA=

0 comments on commit 64c38ee

Please sign in to comment.