GithubHelp home page GithubHelp logo

f5networks / f5-openstack-image-prep Goto Github PK

View Code? Open in Web Editor NEW
0.0 22.0 13.0 140 KB

Contains scripts to prepare an F5® BIG-IP® VE image file to boot in OpenStack.

License: Apache License 2.0

Shell 66.24% Python 33.76%
openstack bigip automation

f5-openstack-image-prep's Introduction

This GitHub repository has been archived and is read-only. This project is no longer actively maintained.

f5-openstack-image-prep

Slack

Introduction

The standard F5 BIG-IP Virtual Edition (VE) images available from f5.com must be 'patched' in order to be compatible with OpenStack. This repository's contents make it possible to patch and upload F5 VE images into OpenStack Glance.

The easiest way to patch a VE image for use in OpenStack is to use the F5 Heat template 'patch_upload_ve_image.yaml'. Please see the F5 Heat User Guide for instructions.

For Developers

VE Image Patching

A VE image must be 'patched' to run in OpenStack. This allows for proper bootup of the instance with the correct interfaces and selfIPs. The patch-image.sh script in bin/ does this work. If you would like to patch a VE image in a specific way other than what is provided in the ve_image_sync.py tool, you can use the patch-image.sh script directly:

sudo /bin/bash patch-image.sh -f -s <your_startup_script> BIGIP_11.6.qcow2

The above command patches the BIGIP_11.6.qcow2 image to be firstboot and injects a user-defined startup script before producing a patched image. The patched image will be created in $HOME/.f5-image-prep/tmp if no -o (output file) is specified. A minimal execution of the script might look like the following:

sudo /bin/bash patch-image.sh -f BIG_11.6.qcow2

Setup

To install the project requirements:

sudo pip install -R requirements.txt

Because the bin/patch-image.sh script manipulates the host kernel, it will only run successfully in environments that permit kernel manipulation (e.g., lsmod, and modprobe nbd). THIS PRECLUDES THE USE OF (MOST) CONTAINERS!! The script also needs to mount and umount filesystems (using the nbd drivers) so rights to devices/mount points, etc., are necessary.

Currently, Ubuntu 14.04 has been verified to support the patch scrip; a patch for 16.04 is under review.

Installation

You can either clone this repo, or use the command below to install it using pip.

sudo pip install git+https://github.com/F5Networks/f5-openstack-image-prep.git

Updating Code

Note that any updates to code in lib/f5_image_prep have to be tar'ed up in startup.tar as well.

Filing Issues

See the Issues section of Contributing.

Contributing

See Contributing.

Copyright

Copyright 2016 F5 Networks Inc.

License

Apache V2.0

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Contributor License Agreement

Individuals or business entities who contribute to this project must have completed and submitted the F5 Contributor License Agreement to [email protected] prior to their code submission being included in this project.

f5-openstack-image-prep's People

Contributors

caphrim007 avatar elliotwilcock-cli avatar jputrino avatar pdp2shirts avatar szakeri avatar zancas avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

f5-openstack-image-prep's Issues

provision_modules doesn't handle multiple modules provisioning

Hi

When several modules are provisioned tmsh/mcpd without waiting the previous one finish it's provisioning the provision_modules script fails:

Jun 17 05:17:09 bigip2 err mcpd[7224]: 01071003:3: A previous provisioning operation is in progress. Try again when the BIGIP is active.
Jun 17 05:17:09 bigip2 err tmsh[20740]: 01420006:3: 01071003:3: A previous provisioning operation is in progress. Try again when the BIGIP is active.

Need the netmask for SelfIPs to be full netmask or cidr notation

With Mitaka+ Heat you can get the subnets associated with a Port object. From the subnet you can get a CIDR notation. That's the last piece missing to support full static configurations (no DHCP needed) for VE onboarding.

However, the startup script needs to take CIDR notation for Self IP creations.

f5-openstack-image-prep/lib/f5_image_prep/os-functions/openstack-network.sh

line 58 needs to have the IP regex removed from the netmask validation for this to work.

mgmt-routes not supported

This is a big restriction given that if TMM has a default route then there is no outbound connectivity from the management interface. This includes using the OS::Heat::WaitCondition mechanism necessary in many cases.

[COSMETIC] force_mgmt_mtu: wrong message logged

The following

            log "Setting Management interface MTU to default $mgmt_mtu"
            ip link set eth0 mtu $OS_MGMT_MTU

should be instead

            log "Setting Management interface MTU to default $OS_MGMT_MTU"
            ip link set eth0 mtu $OS_MGMT_MTU

Regenerate startup.tar

This tar tar file should be removed from the repository:

f5-openstack-image-prep/lib/f5_image_prep/startup.tar

and should be regenerate from the contents of:

f5-openstack-image-prep/lib/f5_image_prep/os-functions

when it is needed by the script:

f5-openstack-image-prep/f5_image_prep/ve_image_sync.py

Allow custom startup script

Originally created on F5Networks/f5-openstack-heat repo by @alonsocamaro:

Could be possible to specify a custom startup script? or even better a tar.gz file containing startup scripts.

I expect customers will want to have strict version control on that and not depend on the status GIT repository. Additionally they might also want to customize it.

Prep script appears to succeed when mounting fails.

I ran patch_upload_ve_image.yaml like this:

$ openstack stack create -t patch_upload_ve_image.yaml --parameter "onboard_image=ubuntu-16.04-server-cloudimg-amd64-0160420.3;flavor=m1.large;private_network=default;f5_image_import_auth_url=http://10.190.20.22:5000/v2.0;f5_image_import_tenant=ajenkins;f5_image_import_user=ajenkins;f5_image_import_password=6NBQSyaz;f5_ve_image_url=http://10.190.4.241:8000/BIGIP-11.6.0.6.0.442.ALL.qcow2.zip;f5_ve_image_name=BIGIP-11.6.0.6.0.442.qcow2;image_prep_key=id_rsa_pdbld" bigip116-ajenkins-onboard

When I spin up servers created using the image produced, they don't appear to do any OpenStack-specific things. They don't honor my passwords or SSH keys or licenses, and they have the default login passwords for root and admin.

I grabbed the OpenStack log output. I clicked "Full Log" but it looks like it only gave me the last parts. I can see some interesting things; it looks like mounting the disk image fails but the script still thinks it was successful.

[  191.841674] cloud-init[1168]: ++ get_dev set.1._config
[  191.843248] cloud-init[1168]: ++ ls -l /dev/vg-db-hda
[  191.844720] cloud-init[1168]: ++ cut '-d>' -f2
[  191.845569] cloud-init[1168]: ++ cut -d/ -f2-
[  191.846392] cloud-init[1168]: ++ grep set.1._config
[  191.850690] cloud-init[1168]: ls: cannot access '/dev/vg-db-hda': No such file or directory
[  191.852908] cloud-init[1168]: + mount /dev/ /mnt/bigip-config
[  191.854820] cloud-init[1168]: mount:  /dev is not a block device

"Full" log below:

[  129.130184] cloud-init[1168]: 1382250K .......... .......... .......... .......... .......... 99% 82.1M 0s
[  129.130994] cloud-init[1168]: 1382300K .......... .......... .......... .......... .......... 99% 76.9M 0s
[  129.131745] cloud-init[1168]: 1382350K .......... .......... .......... .......... .......... 99% 38.8M 0s
[  129.132580] cloud-init[1168]: 1382400K .......... .......... .......... .......... .......... 99%  165M 0s
[  129.133519] cloud-init[1168]: 1382450K .......... .......... .......... .......... .......... 99%  204M 0s
[  129.134336] cloud-init[1168]: 1382500K .......... .......... .......... .......... .......... 99%  202M 0s
[  129.135172] cloud-init[1168]: 1382550K .......... .......... .......... .......... .......... 99%  185M 0s
[  129.135910] cloud-init[1168]: 1382600K .......... .......... .......... .......... .......... 99%  179M 0s
[  129.137007] cloud-init[1168]: 1382650K .......... .......... .......... .......... .......... 99% 84.7M 0s
[  129.137849] cloud-init[1168]: 1382700K .......... .......... .......... .......... .......... 99%  188M 0s
[  129.138869] cloud-init[1168]: 1382750K .......... .......... .......... .......... .......... 99% 65.3M 0s
[  129.139988] cloud-init[1168]: 1382800K .......... .......... .......... .......... .......... 99%  145M 0s
[  129.140982] cloud-init[1168]: 1382850K .......... .......... .......... .......... .......... 99%  196M 0s
[  129.141801] cloud-init[1168]: 1382900K .......... .......... .......... .......... .......... 99%  128M 0s
[  129.142626] cloud-init[1168]: 1382950K .......... .......... .......... .......... .......... 99%  201M 0s
[  129.143341] cloud-init[1168]: 1383000K .......... .......... .......... .......... .......... 99% 75.6M 0s
[  129.144183] cloud-init[1168]: 1383050K .......... .......... .......... .......... .......... 99%  196M 0s
[  129.145025] cloud-init[1168]: 1383100K .......... .......... .......... .......... .......... 99% 69.7M 0s
[  129.145764] cloud-init[1168]: 1383150K .......... .......... .......... .......... .......... 99%  174M 0s
[  129.146538] cloud-init[1168]: 1383200K .......... .......... .......... .......... .......... 99% 69.4M 0s
[  129.147325] cloud-init[1168]: 1383250K .......... .......... .......... .......... .......... 99%  158M 0s
[  129.148125] cloud-init[1168]: 1383300K .......... .......... .......... .......... .......... 99%  179M 0s
[  129.149150] cloud-init[1168]: 1383350K .......... .......... .......... .......... .......... 99% 97.5M 0s
[  129.149896] cloud-init[1168]: 1383400K .......... .......... .......... .......... .......... 99%  112M 0s
[  129.150729] cloud-init[1168]: 1383450K .......... .......... .......... .......... .......... 99% 78.8M 0s
[  129.151547] cloud-init[1168]: 1383500K .......... .......... .......... .......... .......... 99%  192M 0s
[  129.152456] cloud-init[1168]: 1383550K .......... .......... .......... .......... .......... 99% 75.0M 0s
[  129.153341] cloud-init[1168]: 1383600K .......... .......... .......... .......... .......... 99%  223M 0s
[  129.154103] cloud-init[1168]: 1383650K .......... .......... .......... .......... .......... 99% 81.2M 0s
[  129.154922] cloud-init[1168]: 1383700K .......... .......... .......... .......... .......... 99%  144M 0s
[  129.155866] cloud-init[1168]: 1383750K .......... .......... .......... .......... .......... 99% 86.3M 0s
[  129.156737] cloud-init[1168]: 1383800K .......... .......... .......... .......... .......... 99%  169M 0s
[  129.157492] cloud-init[1168]: 1383850K .......... .......... .......... .......... .......... 99% 64.8M 0s
[  129.158289] cloud-init[1168]: 1383900K .......... .......... .......... .......... .......... 99%  209M 0s
[  129.159109] cloud-init[1168]: 1383950K .......... .......... .......... .......... .......... 99%  155M 0s
[  129.159941] cloud-init[1168]: 1384000K .......... .......... .......... .......... .......... 99% 89.8M 0s
[  129.161346] cloud-init[1168]: 1384050K .......... .......... .......... .......... .......... 99%  168M 0s
[  129.162108] cloud-init[1168]: 1384100K .......... .......... .......... .......... .......... 99% 39.7M 0s
[  129.162987] cloud-init[1168]: 1384150K .......... .......... .......... .......... .......... 99%  209M 0s
[  129.163808] cloud-init[1168]: 1384200K .......... .......... .......... .......... .......... 99%  158M 0s
[  129.164679] cloud-init[1168]: 1384250K .......... .......... .......... .......... .......... 99%  198M 0s
[  129.165506] cloud-init[1168]: 1384300K .......... .......... .......... .......... .......... 99%  210M 0s
[  129.166250] cloud-init[1168]: 1384350K .......... .......... .......... .......... .......... 99%  108M 0s
[  129.167075] cloud-init[1168]: 1384400K .......... .......... .......... .......... .......... 99%  178M 0s
[  129.167975] cloud-init[1168]: 1384450K .......... .......... .......... .......... .......... 99% 77.1M 0s
[  129.168818] cloud-init[1168]: 1384500K .......... .......... .......... .......... .......... 99%  165M 0s
[  129.169567] cloud-init[1168]: 1384550K .......... .......... .......... .......... .......... 99% 46.5M 0s
[  129.170365] cloud-init[1168]: 1384600K .......... .......... .......... .......... .......... 99%  207M 0s
[  129.171161] cloud-init[1168]: 1384650K .......... .......... .......... .......... .......... 99%  183M 0s
[  129.171969] cloud-init[1168]: 1384700K .......... .......... .......... .......... .......... 99% 83.8M 0s
[  129.173328] cloud-init[1168]: 1384750K .......... .......... .......... .......... .......... 99%  185M 0s
[  129.174151] cloud-init[1168]: 1384800K .......... .......... .......... .......... .......... 99%  200M 0s
[  129.175064] cloud-init[1168]: 1384850K .......... .......... .......... .......... .......... 99%  121M 0s
[  129.175923] cloud-init[1168]: 1384900K .......... .......... .......... .......... .......... 99%  169M 0s
[  129.177014] cloud-init[1168]: 1384950K .......... .......... .......... .......... .......... 99% 73.3M 0s
[  129.177902] cloud-init[1168]: 1385000K .......... .......... .......... .......... .......... 99%  199M 0s
[  129.178861] cloud-init[1168]: 1385050K .......... .......... .......... .......... .......... 99% 81.3M 0s
[  129.179911] cloud-init[1168]: 1385100K .......... .......... .......... .......... .......... 99%  187M 0s
[  129.181392] cloud-init[1168]: 1385150K .......... .......... .......... .......... .......... 99% 75.7M 0s
[  129.182386] cloud-init[1168]: 1385200K .......... .......... .......... .......... .......... 99%  168M 0s
[  129.183209] cloud-init[1168]: 1385250K .......... .......... .......... .......... .......... 99% 82.3M 0s
[  129.184093] cloud-init[1168]: 1385300K .......... .......... .......... .......... .......... 99%  246M 0s
[  129.185327] cloud-init[1168]: 1385350K .......... .......... .......... .......... .......... 99% 73.2M 0s
[  129.186159] cloud-init[1168]: 1385400K .......... .......... .......... .......... .......... 99%  192M 0s
[  129.186919] cloud-init[1168]: 1385450K .......... .......... .......... .......... .......... 99% 76.2M 0s
[  129.187730] cloud-init[1168]: 1385500K .......... .......... .......... .......... .......... 99%  105M 0s
[  129.188546] cloud-init[1168]: 1385550K .......... .......... .......... .......... .......... 99% 91.8M 0s
[  129.189684] cloud-init[1168]: 1385600K .......... .......... .......... .......... .......... 99%  174M 0s
[  129.190507] cloud-init[1168]: 1385650K .......... .......... .......... .......... .......... 99%  206M 0s
[  129.191296] cloud-init[1168]: 1385700K .......... .......... .......... .......... .......... 99% 51.0M 0s
[  129.192061] cloud-init[1168]: 1385750K .......... .......... .......... .......... .......... 99%  243M 0s
[  129.193066] cloud-init[1168]: 1385800K .......... .......... .......... .......... .......... 99%  178M 0s
[  129.193918] cloud-init[1168]: 1385850K .......... .......... .......... .......... .......... 99%  189M 0s
[  129.194753] cloud-init[1168]: 1385900K .......... .......... .......... .......... .......... 99% 75.6M 0s
[  129.195586] cloud-init[1168]: 1385950K .......... .......... .......... .......... .......... 99% 63.3M 0s
[  129.196382] cloud-init[1168]: 1386000K .......... .......... .......... .......... .......... 99% 80.9M 0s
[  129.197532] cloud-init[1168]: 1386050K .......... .......... .......... .......... .......... 99%  206M 0s
[  129.198273] cloud-init[1168]: 1386100K .......... .......... .......... .......... .......... 99%  172M 0s
[  129.199066] cloud-init[1168]: 1386150K .......... .......... .......... .......... .......... 99%  130M 0s
[  129.199887] cloud-init[1168]: 1386200K .......... .......... .......... .......... .......... 99%  155M 0s
[  129.201005] cloud-init[1168]: 1386250K .......... .......... .......... .......... .......... 99% 78.9M 0s
[  129.201806] cloud-init[1168]: 1386300K .......... .......... .......... .......... .......... 99%  178M 0s
[  129.202712] cloud-init[1168]: 1386350K .......... .......... .......... .......... .......... 99% 73.3M 0s
[  129.203460] cloud-init[1168]: 1386400K .......... .......... .......... .......... .......... 99%  167M 0s
[  129.204271] cloud-init[1168]: 1386450K .......... .......... .......... .......... .......... 99%  220M 0s
[  129.205070] cloud-init[1168]: 1386500K .......... .......... .......... .......... .......... 99% 74.0M 0s
[  129.205858] cloud-init[1168]: 1386550K .......... .......... .......... .......... .......... 99%  202M 0s
[  129.206570] cloud-init[1168]: 1386600K .......... .......... .......... .......... .......... 99% 81.4M 0s
[  129.207340] cloud-init[1168]: 1386650K .......... .......... .......... .......... .......... 99%  212M 0s
[  129.208132] cloud-init[1168]: 1386700K .......... .......... .......... .......... .......... 99% 79.0M 0s
[  129.209263] cloud-init[1168]: 1386750K .......... .......... .......... .......... .......... 99%  178M 0s
[  129.209999] cloud-init[1168]: 1386800K .......... .......... .......... .......... .......... 99% 89.9M 0s
[  129.210749] cloud-init[1168]: 1386850K .......... .......... .......... .......... .......... 99%  182M 0s
[  129.211533] cloud-init[1168]: 1386900K .......... .......... .......... .......... .......... 99% 87.4M 0s
[  129.212383] cloud-init[1168]: 1386950K .......... .......... .......... .......... .......... 99%  194M 0s
[  129.213375] cloud-init[1168]: 1387000K .......... .......... .......... .......... .......... 99% 74.6M 0s
[  129.214207] cloud-init[1168]: 1387050K .......... .......... .......... .......... .......... 99%  154M 0s
[  129.214948] cloud-init[1168]: 1387100K .......... .......... .......... .......... .......... 99%  192M 0s
[  129.215754] cloud-init[1168]: 1387150K .......... .......... .......... .......... .......... 99% 95.8M 0s
[  129.216556] cloud-init[1168]: 1387200K .......... .......... .......... .......... .......... 99% 59.6M 0s
[  129.217559] cloud-init[1168]: 1387250K .......... .......... .......... .......... .......... 99%  264M 0s
[  129.218373] cloud-init[1168]: 1387300K .......... .......... .......... .......... .......... 99%  168M 0s
[  129.219277] cloud-init[1168]: 1387350K .......... .......... .......... .......... .......... 99% 51.4M 0s
[  129.220198] cloud-init[1168]: 1387400K .......... .......... .......... .......... .......... 99%  264M 0s
[  129.221513] cloud-init[1168]: 1387450K .......... .......... .......... .......... .......... 99%  306M 0s
[  129.222286] cloud-init[1168]: 1387500K .......... .......... .......... .......... .......... 99% 95.3M 0s
[  129.223314] cloud-init[1168]: 1387550K .......... .......... .......... .......... .......... 99% 38.7M 0s
[  129.224126] cloud-init[1168]: 1387600K .......... .......... .......... .......... .......... 99%  309M 0s
[  129.225184] cloud-init[1168]: 1387650K .......... .......... .......... .......... .......... 99%  275M 0s
[  129.225987] cloud-init[1168]: 1387700K .......... .......... .......... .......... .......... 99%  369M 0s
[  129.226804] cloud-init[1168]: 1387750K .......... .......... .......... .......... .......... 99%  127M 0s
[  129.227578] cloud-init[1168]: 1387800K .......... .......... .......... .......... .......... 99% 36.3M 0s
[  129.228350] cloud-init[1168]: 1387850K .......... .......... .......... .......... .......... 99%  320M 0s
[  129.229873] cloud-init[1168]: 1387900K .......... .......... .......... .......... .......... 99%  272M 0s
[  129.230710] cloud-init[1168]: 1387950K .......... .......... .......... .......... .......... 99%  165M 0s
[  129.231442] cloud-init[1168]: 1388000K .......... .......... .......... .......... .......... 99%  213M 0s
[  129.232285] cloud-init[1168]: 1388050K .......... .......... .......... .......... .......... 99% 42.0M 0s
[  129.233508] cloud-init[1168]: 1388100K .......... .......... .......... .......... .......... 99%  279M 0s
[  129.234305] cloud-init[1168]: 1388150K .......... .......... .......... .......... .......... 99%  279M 0s
[  129.235047] cloud-init[1168]: 1388200K .......... .......... .......... .......... .......... 99%  146M 0s
[  129.236059] cloud-init[1168]: 1388250K .......... .......... .......... .......... .......... 99% 64.7M 0s
[  129.237120] cloud-init[1168]: 1388300K .......... .......... .......... .......... .......... 99% 39.8M 0s
[  129.237939] cloud-init[1168]: 1388350K .......... .......... .......... .......... .......... 99%  143M 0s
[  129.238735] cloud-init[1168]: 1388400K .......... .......... .......... .......... .......... 99%  166M 0s
[  129.239537] cloud-init[1168]: 1388450K .......... .......... .......... .......... .......... 99%  208M 0s
[  129.240312] cloud-init[1168]: 1388500K .......... .......... .......... .......... .......... 99%  180M 0s
[  129.241114] cloud-init[1168]: 1388550K .......... .......... .......... .......... .......... 99% 71.2M 0s
[  129.241910] cloud-init[1168]: 1388600K .......... .......... .......... .......... .......... 99%  145M 0s
[  129.242701] cloud-init[1168]: 1388650K .......... .......... .......... .......... .......... 99% 61.8M 0s
[  129.243419] cloud-init[1168]: 1388700K .......... .......... .......... .......... .......... 99%  152M 0s
[  129.244254] cloud-init[1168]: 1388750K .......... .......... .......... .......... .......... 99%  142M 0s
[  129.245598] cloud-init[1168]: 1388800K .......... .......... .......... .......... .......... 99%  221M 0s
[  129.246386] cloud-init[1168]: 1388850K .......... .......... .......... .......... .......... 99%  215M 0s
[  129.247106] cloud-init[1168]: 1388900K .......... .......... .......... .......... .......... 99%  209M 0s
[  129.249130] cloud-init[1168]: 1388950K .......... .......... .......... .......... .......... 99% 52.7M 0s
[  129.250887] cloud-init[1168]: 1389000K .......... .......... .......... .......... .......... 99%  179M 0s
[  129.252552] cloud-init[1168]: 1389050K .......... .......... .......... .......... .......... 99%  258M 0s
[  129.254211] cloud-init[1168]: 1389100K .......... .......... .......... .......... .......... 99%  220M 0s
[  129.255925] cloud-init[1168]: 1389150K .......... .......... .......... .......... .......... 99% 76.0M 0s
[  129.257563] cloud-init[1168]: 1389200K .......... .......... .......... .......... .......... 99%  299M 0s
[  129.258367] cloud-init[1168]: 1389250K .......... .......... .......... .......... .......... 99% 69.8M 0s
[  129.259105] cloud-init[1168]: 1389300K .......... .......... .......... .......... .......... 99%  222M 0s
[  129.259886] cloud-init[1168]: 1389350K .......... .......... .......... .......... .......... 99% 66.5M 0s
[  129.260764] cloud-init[1168]: 1389400K .......... .......... .......... .......... .......... 99%  199M 0s
[  129.261549] cloud-init[1168]: 1389450K .......... .......... .......... .......... .......... 99%  215M 0s
[  129.262240] cloud-init[1168]: 1389500K .......... .......... .......... .......... .......... 99% 63.7M 0s
[  129.263035] cloud-init[1168]: 1389550K .......... .......... .......... .......... .......... 99%  203M 0s
[  129.263797] cloud-init[1168]: 1389600K .......... .......... .......... .......... .......... 99% 56.0M 0s
[  129.264611] cloud-init[1168]: 1389650K .......... .......... .......... .......... .......... 99%  207M 0s
[  129.265344] cloud-init[1168]: 1389700K .......... .......... .......... .......... .......... 99%  201M 0s
[  129.266095] cloud-init[1168]: 1389750K .......... .......... .......... .......... .......... 99% 77.5M 0s
[  129.266855] cloud-init[1168]: 1389800K .......... .......... .......... .........            100%  167M=25s
[  129.267652] cloud-init[1168]: 2016-06-09 19:39:10 (54.0 MB/s) - 'f5_ve_image.zip' saved [1423195218/1423195218]
[  129.268403] cloud-init[1168]: + unzip f5_ve_image.zip BIGIP-11.6.0.6.0.442.qcow2
[  129.269468] cloud-init[1168]: Archive:  f5_ve_image.zip
[  158.180113] cloud-init[1168]:   inflating: BIGIP-11.6.0.6.0.442.qcow2
[  158.181904] cloud-init[1168]: + python ve_image_sync.py -i BIGIP-11.6.0.6.0.442.qcow2
[  158.524723] cloud-init[1168]: sudo: unable to resolve host bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am
[  158.609883] cloud-init[1168]: + '[' -n '' ']'
[  158.610764] cloud-init[1168]: + '[' -n '' ']'
[  158.611443] cloud-init[1168]: + check_oldfile_full_path
[  158.612077] cloud-init[1168]: + '[' -f BIGIP-11.6.0.6.0.442.qcow2 ']'
[  158.612825] cloud-init[1168]: ++ basename BIGIP-11.6.0.6.0.442.qcow2
[  158.613832] cloud-init[1168]: + ofname=BIGIP-11.6.0.6.0.442.qcow2
[  158.614959] cloud-init[1168]: + '[' -z os_ready-BIGIP-11.6.0.6.0.442.qcow2 ']'
[  158.616588] cloud-init[1168]: + cp BIGIP-11.6.0.6.0.442.qcow2 /home/imageprep/os_ready-BIGIP-11.6.0.6.0.442.qcow2
[  166.132374] cloud-init[1168]: + sleep 2
[  168.152493] cloud-init[1168]: + qemu-nbd -d /dev/nbd0
[  168.287949] cloud-init[1168]: + sleep 2
[  170.290635] cloud-init[1168]: + qemu-nbd --connect=/dev/nbd0 /home/imageprep/os_ready-BIGIP-11.6.0.6.0.442.qcow2
[  170.570951] cloud-init[1168]: + sleep 2
[  172.574365] cloud-init[1168]: + pvscan
[  172.785754] cloud-init[1168]: + sleep 2
[  174.788964] cloud-init[1168]: + echo 'The following command may cause '\''Can'\''t deactivate'\'' messages.'
[  174.790556] cloud-init[1168]: + echo 'These do not necessarily indicate a problem.'
[  174.790982] cloud-init[1168]: + vgchange -ay
[  174.801994] cloud-init[1168]: + sleep 2
[  176.803981] cloud-init[1168]: + mkdir -p /mnt/bigip-config
[  176.809516] cloud-init[1168]: + '[' -n '' ']'
[  176.811035] cloud-init[1168]: + echo 'Waiting 15 seconds'
[  176.812585] cloud-init[1168]: + sleep 15
[  191.814761] cloud-init[1168]: + umount /mnt/bigip-config
[  191.833532] cloud-init[1168]: umount: /mnt/bigip-config: not mounted
[  191.835151] cloud-init[1168]: + '[' 32 -eq 1 ']'
[  191.836742] cloud-init[1168]: + umount /mnt/bigip-shared
[  191.838255] cloud-init[1168]: umount: /mnt/bigip-shared: mountpoint not found
[  191.839694] cloud-init[1168]: + '[' 32 -eq 1 ']'
[  191.841674] cloud-init[1168]: ++ get_dev set.1._config
[  191.843248] cloud-init[1168]: ++ ls -l /dev/vg-db-hda
[  191.844720] cloud-init[1168]: ++ cut '-d>' -f2
[  191.845569] cloud-init[1168]: ++ cut -d/ -f2-
[  191.846392] cloud-init[1168]: ++ grep set.1._config
[  191.850690] cloud-init[1168]: ls: cannot access '/dev/vg-db-hda': No such file or directory
[  191.852908] cloud-init[1168]: + mount /dev/ /mnt/bigip-config
[  191.854820] cloud-init[1168]: mount:  /dev is not a block device
[  191.856535] cloud-init[1168]: + inject_files
[  191.857216] cloud-init[1168]: + '[' -f /home/imageprep/f5-openstack-image-prep/lib/f5_image_prep/startup.tar ']'
[  191.858188] cloud-init[1168]: + tar -xf /home/imageprep/f5-openstack-image-prep/lib/f5_image_prep/startup.tar -C /mnt/bigip-config/
[  191.885667] cloud-init[1168]: + true
[  191.886642] cloud-init[1168]: + touch /mnt/bigip-config/firstboot
[  191.887894] cloud-init[1168]: + '[' -f none ']'
[  191.889836] cloud-init[1168]: + '[' -n '' ']'
[  191.891096] cloud-init[1168]: + '[' -n '' ']'
[  191.892512] cloud-init[1168]: + sleep 2
[  193.894460] cloud-init[1168]: + umount /mnt/bigip-config
[  193.896850] cloud-init[1168]: umount: /mnt/bigip-config: not mounted
[  193.898420] cloud-init[1168]: + sleep 2
[  195.901956] cloud-init[1168]: + '[' -n '' ']'
[  195.903705] cloud-init[1168]: + sleep 2
[  197.904284] cloud-init[1168]: + vgchange -an
[  197.910719] cloud-init[1168]: + sleep 2
[  199.914336] cloud-init[1168]: + qemu-nbd -d /dev/nbd0
[  199.920998] block nbd0: Receive control failed (result -32)
[  199.925109] cloud-init[1168]: + echo 'Patched image located at /home/imageprep/os_ready-BIGIP-11.6.0.6.0.442.qcow2'
[  199.926044] cloud-init[1168]: + set +x
[  268.733177] cloud-init[1168]: Patching image...
[  268.737351] cloud-init[1168]: Uploading patched image to glance...
[  268.739262] cloud-init[1168]: Image Model:
[  268.740739] cloud-init[1168]: <Image {u'status': u'active', u'created_at': u'2016-06-09T19:40:23.000000', u'virtual_size': None, u'name': u'BIGIP-11.6.0.6.0.442', u'deleted': False, u'container_format': u'bare', u'min_ram': 0, u'disk_format': u'qcow2', u'updated_at': u'2016-06-09T19:41:31.000000', u'properties': {}, u'min_disk': 0, u'protected': False, u'checksum': u'29ca101fb53850d414dbead792cf6323', u'owner': u'97240854a40247e2ad6ae28341e1d3ba', u'is_public': False, u'deleted_at': None, u'id': u'c4be40e1-fa6d-40b3-8f04-2bdaef31cc91', u'size': 3477274624}>
[  268.783964] cloud-init[1168]: + curl -i -X POST -H 'X-Auth-Token: f44bee7cbf0842139e3c916641125dfd' -H 'Content-Type: application/json' -H 'Accept: application/json' http://10.190.20.22:8004/v1/a33418988e934e1b8d4f1bfc316e4436/stacks/bigip116-ajenkins-onboard/8a05b130-7b5a-4126-bb51-d2fa7731e3e8/resources/wait_handle/signal --data-binary '{"status": "SUCCESS"}'
[  268.823394] cloud-init[1168]:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
[  268.824560] cloud-init[1168]:                                  Dload  Upload   Total   Spent    Left  Speed
[  268.918767] cloud-init[1168]:   0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100    25  100     4  100    21     41    220 --:--:-- --:--:-- --:--:--   221
[  268.919955] cloud-init[1168]: HTTP/1.1 200 OK
[  268.920883] cloud-init[1168]: Content-Type: application/json; charset=UTF-8
[  268.921774] cloud-init[1168]: Content-Length: 4
[  268.922631] cloud-init[1168]: X-Openstack-Request-Id: req-6ecccd9f-891e-40aa-9a5e-ca9afde68cc6
[  268.923207] cloud-init[1168]: Date: Thu, 09 Jun 2016 19:41:32 GMT
[  268.923840] cloud-init[1168]: 
ci-info: ++++++++++++++++++++++++Authorized keys from /home/ubuntu/.ssh/authorized_keys for user ubuntu++++++++++++++++++++++++
ci-info: +---------+-------------------------------------------------+---------+----------------------------------------------+
ci-info: | Keytype |                Fingerprint (md5)                | Options |                   Comment                    |
ci-info: +---------+-------------------------------------------------+---------+----------------------------------------------+
ci-info: | ssh-rsa | 0e:80:54:2d:27:e8:8b:a1:44:e8:a3:4e:e3:3d:b8:4b |    -    | [email protected] |
ci-info: +---------+-------------------------------------------------+---------+----------------------------------------------+
<14>Jun  9 19:41:32 ec2: 
<14>Jun  9 19:41:32 ec2: #############################################################
<14>Jun  9 19:41:32 ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Jun  9 19:41:32 ec2: 1024 SHA256:RsW/K1EDrBxs+zquX3dM9WQ3VC2qlSbR1WA5mUUZ+QY root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am (DSA)
<14>Jun  9 19:41:32 ec2: 256 SHA256:xeXNgw902GI0onYnU77kx34AWb5Q+15yUVY/Upuvyyw root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am (ECDSA)
<14>Jun  9 19:41:32 ec2: 256 SHA256:bBs2EBKT+2RJark9DPCHLAMsZFhHoJXB1kMZ+TEyf2g root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am (ED25519)
<14>Jun  9 19:41:32 ec2: 2048 SHA256:oFiFcQrUxg/wnHLe+08fe7giGubdnbbrKPMD1SKajmo root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am (RSA)
<14>Jun  9 19:41:32 ec2: -----END SSH HOST KEY FINGERPRINTS-----
<14>Jun  9 19:41:32 ec2: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIMgX+B6jkw/WMpivbnLyXnE25mmeB/MSqoe/AO9hbLru3lFRcBalD3CEPhSRTsjqpQ7cTjZRnyp03GJBl8bWls= root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICaVujQMz/01z1Evh3UcOkXutzkcspyjNhw1XHg5aJ/O root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCual7cD77drFS2fLsNMIHf6HwP8+IpHfMKFlXjQ0M9bJRvHsFqPbJkEulVQQ49vjxqQKhlGeVqKeLQ3GmsjKULnhxaIXs7x/6eeNNTJCkg0ywx35QUkL4b1T4V8GuIdxUbgt/6L7KucxuHbw3+oJZtGEBWCV6u1RtL3h0Z7sDOlzTsB31ITR2i2dVQjm/D3Zvn0Vf3tjzTaQpm8bORf3TUhkvuRec7M1wrjl4Ov8IT+GUPALJSjoZXT3uOiQv1nddalENeEIFgxqs5IyDSpZatEH44y0YZ0ElLVsmmYArZEdMhKM/Z1Xj2FSUK5IfVd6ufN4WRd6cESNj1OSRGRbzX root@bi--ajenkins-onboard-image-prep-instance-aeeklei7v2am
-----END SSH HOST KEY KEYS-----
[  269.272624] cloud-init[1168]: nullCloud-init v. 0.7.7 running 'modules:final' at Thu, 09 Jun 2016 19:37:29 +0000. Up 27.31 seconds.
[  269.274129] cloud-init[1168]: Cloud-init v. 0.7.7 finished at Thu, 09 Jun 2016 19:41:32 +0000. Datasource DataSourceOpenStack [net,ver=2].  Up 269.24 seconds

Need to support static configuration of the mgmt interface

When deploying VE with IPv6 networks, there is a desire to manually configure the mgmt interface without requiring SLAAC or DHCPv6 support. Currently the startup script only supports the configuring of TMM interfaces with static values.

Documentation on provisioning the management interface:

https://support.f5.com/kb/en-us/solutions/public/15000/000/sol15040.html

Since the mgmt interface provisioning is different then TMM interfaces, suggested userdata for mgmt interface should match how we provision the mgmt interface:

"network": {
    "interfaces": {
        "mgmt" : {
            "dhcp": "[true|false]",
            "address": "[ipv4 or ipv6 address]",
            "netmask": "[ipv4 netmask, ipv4 cidr bits count, ipv6 netmask, or ipv6 cidr bit count]",
            "ipv4_default_gateway": "[ipv4 address]",
            "ipv6_default_gateway": "[ipv6 address]"
        }
    }
}

IPV6 self IP addresses

The script does not support autoconfiguration of IPV6 self IP addresses. It should support both IPV4 and IPV6 in the same manner, and allow a VLAN to have both an IPV4 and IPV6 self IP associated with it.

VE Failing to retrieve license

@richbrowne --> This is the issue related to my slack message

After being patched with the patch-image tool and booted with a heat stack, the BIG-IP fails to license properly via the startup script and the openstack functions.

The license failure message is as follows from /var/log/message:

Apr 2 23:08:34 host-10-4-4-172 notice openstack-init: Saving Ethernet mapping...done Apr 2 23:08:34 host-10-4-4-172 notice openstack-init: Licensing BIG-IP using license key LYMWS-IUKBJ-GEKAP-XMBSE-LVBRHXN... Apr 2 23:08:40 host-10-4-4-172 notice openstack-init: Unknown exception Apr 2 23:08:40 host-10-4-4-172 notice openstack-init: Could not license BIG-IP (attempt #1/5), retrying in 5 seconds... Apr 2 23:08:45 host-10-4-4-172 notice openstack-init: Licensing BIG-IP using license key LYMWS-IUKBJ-GEKAP-XMBSE-LVBRHXN... Apr 2 23:08:48 host-10-4-4-172 notice openstack-init: Unknown exception Apr 2 23:08:48 host-10-4-4-172 notice openstack-init: Could not license BIG-IP (attempt #2/5), retrying in 5 seconds... Apr 2 23:08:50 host-10-4-4-172 notice setsebool: The allow_dynad policy boolean was changed to on by root Apr 2 23:08:53 host-10-4-4-172 notice openstack-init: Licensing BIG-IP using license key LYMWS-IUKBJ-GEKAP-XMBSE-LVBRHXN... Apr 2 23:08:57 host-10-4-4-172 notice openstack-init: Unknown exception Apr 2 23:08:57 host-10-4-4-172 notice openstack-init: Could not license BIG-IP (attempt #3/5), retrying in 5 seconds... Apr 2 23:09:02 host-10-4-4-172 notice openstack-init: Licensing BIG-IP using license key LYMWS-IUKBJ-GEKAP-XMBSE-LVBRHXN... Apr 2 23:09:06 host-10-4-4-172 notice openstack-init: Unknown exception Apr 2 23:09:06 host-10-4-4-172 notice openstack-init: Could not license BIG-IP (attempt #4/5), retrying in 5 seconds... Apr 2 23:09:11 host-10-4-4-172 notice openstack-init: Licensing BIG-IP using license key LYMWS-IUKBJ-GEKAP-XMBSE-LVBRHXN... Apr 2 23:09:14 host-10-4-4-172 notice syslog-ng[10024]: Configuration reload request received, reloading configuration; Apr 2 23:09:20 host-10-4-4-172 notice openstack-init: Unknown exception Apr 2 23:09:20 host-10-4-4-172 notice openstack-init: Failed to license BIG-IP after 5 attempts, quitting... Apr 2 23:09:20 host-10-4-4-172 notice openstack-init: Could not locate valid BIG-IP license file, no licensed modules found... Apr 2 23:10:03 host-10-4-4-172 notice openstack-init: Successfully connected to mcpd... Apr 2 23:10:03 host-10-4-4-172 notice openstack-init: Successfully connected to mcpd... Apr 2 23:10:03 host-10-4-4-172 notice openstack-init: detected tmm started Apr 2 23:10:04 host-10-4-4-172 notice openstack-init: Saving running configuration... Apr 2 23:10:04 host-10-4-4-172 notice openstack-init: /config/bigip.conf Apr 2 23:10:04 host-10-4-4-172 notice openstack-init: /config/bigip_base.conf Apr 2 23:10:04 host-10-4-4-172 notice openstack-init: /config/bigip_user.conf Apr 2 23:10:04 host-10-4-4-172 notice openstack-init: Saving Ethernet mapping...done Apr 2 23:10:09 host-10-4-4-172 notice openstack-init: Completed OpenStack auto-configuration in 162 seconds... Apr 2 23:10:24 host-10-4-4-172 notice setsebool: The allow_dynad policy boolean was changed to on by root

Feature Request: Allow for mgmt IP to be static setting

Currently, the Openstack-network.sh has settings for the tmm interfaces and you can set dhcp to false. We'd like to request a feature be added whereby the mgmt interface could have the same options along with the settings for IP address and netmask.
command-wise, the global setting for dhcp_mgmt would need to be set to disabled and then a static IP defined.

Please let me know if you need any more information or if the setting exists and I just can't find it.

BIGIP-13 version enrollment requires mgmt IFACE support vs ETH0

  • TITLE: BIGIP-13 version enrollment requires mgmt IFACE support vs ETH0
  • Summary:
    • MGMT is used instead of ETH0 in BIGIP-13 for management purposes
    • Currently, the handling method for this set_iface_value has a syntax error and is not dynamic
    • Needs to have the ability to dynamically handle upcoming versions, not just 13

Docs

Do an editing pass on the README -- ensure what repo is for is explicitly explained and instructions are presented in a format consistent with our other projects.

mitaka and newton requires specific openstack client version in setup.py

To ensure we can prep and upload an image in the mitaka and newton releases of OpenStack, we need to bump the keystone and glance client versions in the setup.py. The correct versions for those libraries in mitaka are: 'python-keystoneclient == 2.3.2', 'python-glanceclient == 2.0.1'. And for newton they are: 'python-keystoneclient == 3.5.1', 'python-glanceclient == 2.5.0'.

Hostname for v12.0 device is 'bigip'

@richbrowne

When booting a VE, the 11.6 version assigns a hostname to the device of '.<dns_suffix>'. Yet when booting version 12.0, the hostname is 'bigip'. A change may need to be made in the startup script to ensure the hostname is always something like that which exists in 11.6.

Once patched, instance does not pull DHCP for TMM interfaces

Testing on Mitaka.
I've successfully patched a BIG-IP image and loaded into Glance. I'm using this userdata.json

{ "bigip": { "system_cmds": [ "echo 'this command runs first!' > /tmp/test.txt", "ls -l / > /tmp/ls-of-root-fs.txt", "echo 'run me last'" ], "change_passwords": "true", "admin_password": "f5test", "root_password": "f5test", "modules": { "auto_provision": "false", "ltm": "nominal", "gtm": "none", "avr": "none", "apm": "none", "afm": "minimum", "asm": "none" }, "network": { "dhcp": "true", "selfip_prefix": "selfip-dhcp-abc-", "vlan_prefix": "network-abc-", "interfaces": { "1.1": { "selfip_allow_service": "default", "selfip_name": "selfip.apps", "vlan_name": "vlan.main" } } } } }

On first boot, it does not get DHCP from TMM client. If I reboot it 3-4 more times, I will eventually get a DHCP address.

Log messages:

[root@host-10:NO LICENSE:Standalone] config # cat /var/log/messages
Feb 7 06:45:27 localhost notice syslog-ng[1792]: syslog-ng starting up; version='2.1.4'
Feb 7 06:47:12 localhost notice syslog-ng[1792]: Configuration reload request received, reloading configuration;
Feb 7 06:47:21 localhost warning vmsvc[4229]: [ warning] [vmtoolsd] The vmsvc service needs to run inside a virtual machine.
Feb 7 06:47:25 localhost notice openstack-init: Starting OpenStack auto-configuration...
Feb 7 06:47:25 localhost notice openstack-init: Forcing /PLATFORM...
Feb 7 06:47:35 localhost notice openstack-init: Setting Management interface MTU to default
Feb 7 06:47:35 localhost notice openstack-init: Running OpenStack auto-configuration...
Feb 7 06:47:35 localhost notice openstack-init: Could not connect to mcpd (attempt 1/20), retrying in 10 seconds...
Feb 7 06:47:45 localhost notice openstack-init: Could not connect to mcpd (attempt 2/20), retrying in 10 seconds...
Feb 7 06:48:17 localhost notice openstack-init: Could not connect to mcpd (attempt 3/20), retrying in 10 seconds...
Feb 7 06:48:33 localhost notice syslog-ng[9363]: syslog-ng starting up; version='2.1.4'
Feb 7 06:48:34 localhost notice openstack-init: Could not connect to mcpd (attempt 4/20), retrying in 10 seconds...
Feb 7 06:48:49 localhost notice openstack-init: Could not connect to mcpd (attempt 5/20), retrying in 10 seconds...
Feb 7 06:48:59 host-10-100-0-103 notice syslog-ng[10514]: syslog-ng starting up; version='2.1.4'
Feb 7 06:49:00 host-10-100-0-103 notice openstack-init: Successfully connected to mcpd...
Feb 7 06:49:23 host-10 notice syslog-ng[12343]: syslog-ng starting up; version='2.1.4'
Feb 7 06:49:25 host-10 notice openstack-init: Saving running configuration...
Feb 7 06:49:25 host-10 notice openstack-init: /config/bigip.conf
Feb 7 06:49:25 host-10 notice openstack-init: /config/bigip_base.conf
Feb 7 06:49:25 host-10 notice openstack-init: /config/bigip_user.conf
Feb 7 06:49:25 host-10 notice openstack-init: Saving Ethernet mapping...done
Feb 7 06:49:25 host-10 notice openstack-init: Retrieving user-data from config drive...
Feb 7 06:49:26 host-10 notice openstack-init: No config drive found
Feb 7 06:49:41 host-10 notice openstack-init: Retrieving user-data from http://169.254.169.254...
Feb 7 06:49:43 host-10 notice openstack-init: Successfully retrieved user-data from instance metadata service...
Feb 7 06:49:50 host-10 notice openstack-init: Retrieving SSH public key from http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key...
Feb 7 06:49:52 host-10 notice openstack-init: Could not retrieve SSH public key after 5 attempts, quitting...
Feb 7 06:49:52 host-10 notice openstack-init: Found plain text password and (against my better judgment) successfully changed root password...
Feb 7 06:49:52 host-10 notice openstack-init: Found plain text password and (against my better judgment) successfully changed admin password...
Feb 7 06:49:52 host-10 notice openstack-init: Loading configuration...
Feb 7 06:49:52 host-10 notice openstack-init: /config/bigip_user.conf
Feb 7 06:49:55 host-10 notice openstack-init: Stopping DHCP client for management interface...
Feb 7 06:49:56 host-10 notice openstack-init: Setup VLAN on interface 1.1...
Feb 7 06:49:56 host-10 notice openstack-init: Configuring VLAN vlan.main on interface 1.1...
Feb 7 06:49:56 host-10 notice openstack-init: tmsh create net vlan vlan.main interfaces add { 1.1 } description "auto-added by openstack-init" mtu 1500
Feb 7 06:49:57 host-10 notice openstack-init: Configuring self IP for interface 1.1...
Feb 7 06:49:57 host-10 notice openstack-init: Issuing DHCP request on interface 1.1...
Feb 7 06:50:29 host-10 notice setsebool: The allow_dynad policy boolean was changed to on by root
Feb 7 06:50:35 host-10 notice openstack-init: Saving after configuring interfaces
Feb 7 06:50:38 host-10 notice openstack-init: Saving running configuration...
Feb 7 06:50:38 host-10 notice openstack-init: /config/bigip.conf
Feb 7 06:50:38 host-10 notice openstack-init: /config/bigip_base.conf
Feb 7 06:50:38 host-10 notice openstack-init: /config/bigip_user.conf
Feb 7 06:50:38 host-10 notice openstack-init: Saving Ethernet mapping...done
Feb 7 06:50:38 host-10 notice openstack-init: No BIG-IP license key found, skipping license activation...
Feb 7 06:50:38 host-10 notice openstack-init: Could not locate valid BIG-IP license file, no licensed modules found...
Feb 7 06:52:21 host-10 notice openstack-init: Successfully connected to mcpd...
Feb 7 06:52:22 host-10 notice openstack-init: Executing system command: echo 'this command runs first!' > /tmp/test.txt...
Feb 7 06:52:25 host-10 notice openstack-init: echo 'this command runs first!' > /tmp/test.txt exited properly...
Feb 7 06:52:32 host-10 notice openstack-init: Executing system command: ls -l / > /tmp/ls-of-root-fs.txt...
Feb 7 06:52:35 host-10 notice openstack-init: ls -l / > /tmp/ls-of-root-fs.txt exited properly...
Feb 7 06:52:35 host-10 notice openstack-init: Executing system command: echo 'run me last'...
Feb 7 06:52:35 host-10 notice openstack-init: run me last
Feb 7 06:52:35 host-10 notice openstack-init: echo 'run me last' exited properly...
Feb 7 06:52:35 host-10 notice openstack-init: Successfully connected to mcpd...
Feb 7 06:52:35 host-10 notice openstack-init: detected tmm started
Feb 7 06:52:44 host-10 notice openstack-init: Saving running configuration...
Feb 7 06:52:44 host-10 notice openstack-init: /config/bigip.conf
Feb 7 06:52:44 host-10 notice openstack-init: /config/bigip_base.conf
Feb 7 06:52:44 host-10 notice openstack-init: /config/bigip_user.conf
Feb 7 06:52:55 host-10 notice openstack-init: Saving Ethernet mapping...done
Feb 7 06:53:08 host-10 notice openstack-init: Completed OpenStack auto-configuration in 343 seconds...

I started a tcpdump on the dhcp interface in netns space

ip netns exec qdhcp-4c35a314-a986-48ac-9191-ed86edf656eb tcpdump -i tape90b6bfd-3c -nnvvvNXs 512

No DHCP messages show up on this interface.
I verified with the same command that when it succeeds a few reboots later, there is a request and response as seen here:

09:28:03.158426 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from fa:16:3e:0c:b0:a3, length 300, xid 0xb05a023f, Flags [none] (0x0000)
Client-Ethernet-Address fa:16:3e:0c:b0:a3
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Parameter-Request Option 55, length 4:
Subnet-Mask, BR, MTU, Default-Gateway
END Option 255, length 0
PAD Option 0, length 0, occurs 50
0x0000: 4510 0148 0000 0000 8011 3996 0000 0000 E..H......9.....
0x0010: ffff ffff 0044 0043 0134 4966 0101 0600 .....D.C.4If....
0x0020: b05a 023f 0000 0000 0000 0000 0000 0000 .Z.?............
0x0030: 0000 0000 0000 0000 fa16 3e0c b0a3 0000 ..........>.....
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 0137 ........c.Sc5..7
0x0110: 0401 1c1a 03ff 0000 0000 0000 0000 0000 ................
0x0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0140: 0000 0000 0000 0000 ........
09:28:03.216565 IP (tos 0xc0, ttl 64, id 63949, offset 0, flags [none], proto UDP (17), length 328)
10.200.0.100.67 > 10.200.0.101.68: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0xb05a023f, Flags [none] (0x0000)
Your-IP 10.200.0.101
Server-IP 10.200.0.100
Client-Ethernet-Address fa:16:3e:0c:b0:a3
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Offer
Server-ID Option 54, length 4: 10.200.0.100
Lease-Time Option 51, length 4: 86400
RN Option 58, length 4: 43200
RB Option 59, length 4: 75600
Subnet-Mask Option 1, length 4: 255.255.255.0
BR Option 28, length 4: 10.200.0.255
Default-Gateway Option 3, length 4: 10.200.0.1
MTU Option 26, length 2: 1450
END Option 255, length 0
PAD Option 0, length 0, occurs 10
0x0000: 45c0 0148 f9cd 0000 4011 68bf 0ac8 0064 [email protected]....d
0x0010: 0ac8 0065 0043 0044 0134 24a6 0201 0600 ...e.C.D.4$.....
0x0020: b05a 023f 0000 0000 0000 0000 0ac8 0065 .Z.?...........e
0x0030: 0ac8 0064 0000 0000 fa16 3e0c b0a3 0000 ...d......>.....
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 0236 ........c.Sc5..6
0x0110: 040a c800 6433 0400 0151 803a 0400 00a8 ....d3...Q.:....
0x0120: c03b 0400 0127 5001 04ff ffff 001c 040a .;...'P.........
0x0130: c800 ff03 040a c800 011a 0205 aaff 0000 ................
0x0140: 0000 0000 0000 0000 ........
09:28:03.596439 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from fa:16:3e:0c:b0:a3, length 300, xid 0xb05a023f, Flags [none] (0x0000)
Client-Ethernet-Address fa:16:3e:0c:b0:a3
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Request
Server-ID Option 54, length 4: 10.200.0.100
Requested-IP Option 50, length 4: 10.200.0.101
Parameter-Request Option 55, length 4:
Subnet-Mask, BR, MTU, Default-Gateway
END Option 255, length 0
PAD Option 0, length 0, occurs 38
0x0000: 4510 0148 0000 0000 8011 3996 0000 0000 E..H......9.....
0x0010: ffff ffff 0044 0043 0134 e5e7 0101 0600 .....D.C.4......
0x0020: b05a 023f 0000 0000 0000 0000 0000 0000 .Z.?............
0x0030: 0000 0000 0000 0000 fa16 3e0c b0a3 0000 ..........>.....
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 0336 ........c.Sc5..6
0x0110: 040a c800 6432 040a c800 6537 0401 1c1a ....d2....e7....
0x0120: 03ff 0000 0000 0000 0000 0000 0000 0000 ................
0x0130: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0140: 0000 0000 0000 0000 ........
09:28:03.718176 IP (tos 0xc0, ttl 64, id 64071, offset 0, flags [none], proto UDP (17), length 328)
10.200.0.100.67 > 10.200.0.101.68: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0xb05a023f, Flags [none] (0x0000)
Your-IP 10.200.0.101
Server-IP 10.200.0.100
Client-Ethernet-Address fa:16:3e:0c:b0:a3
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: ACK
Server-ID Option 54, length 4: 10.200.0.100
Lease-Time Option 51, length 4: 86400
RN Option 58, length 4: 43200
RB Option 59, length 4: 75600
Subnet-Mask Option 1, length 4: 255.255.255.0
BR Option 28, length 4: 10.200.0.255
Default-Gateway Option 3, length 4: 10.200.0.1
MTU Option 26, length 2: 1450
END Option 255, length 0
PAD Option 0, length 0, occurs 10
0x0000: 45c0 0148 fa47 0000 4011 6845 0ac8 0064 [email protected]...d
0x0010: 0ac8 0065 0043 0044 0134 21a6 0201 0600 ...e.C.D.4!.....
0x0020: b05a 023f 0000 0000 0000 0000 0ac8 0065 .Z.?...........e
0x0030: 0ac8 0064 0000 0000 fa16 3e0c b0a3 0000 ...d......>.....
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 0536 ........c.Sc5..6
0x0110: 040a c800 6433 0400 0151 803a 0400 00a8 ....d3...Q.:....
0x0120: c03b 0400 0127 5001 04ff ffff 001c 040a .;...'P.........
0x0130: c800 ff03 040a c800 011a 0205 aaff 0000 ................
0x0140: 0000 0000 0000 0000 ........

09:28:07.508508 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.200.0.101 (ff:ff:ff:ff:ff:ff) tell 10.200.0.101, length 28
0x0000: 0001 0800 0604 0001 fa16 3e0c b0a3 0ac8 ..........>.....
0x0010: 0065 ffff ffff ffff 0ac8 0065 .e.........e
09:28:07.516876 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.200.0.101 (ff:ff:ff:ff:ff:ff) tell 10.200.0.101, length 28
0x0000: 0001 0800 0604 0001 fa16 3e0c b0a3 0ac8 ..........>.....
0x0010: 0065 ffff ffff ffff 0ac8 0065 .e.........e
09:28:07.527358 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.200.0.101 (ff:ff:ff:ff:ff:ff) tell 10.200.0.101, length 28
0x0000: 0001 0800 0604 0001 fa16 3e0c b0a3 0ac8 ..........>.....
0x0010: 0065 ffff ffff ffff 0ac8 0065 .e.........e
09:28:07.536892 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.200.0.101 (ff:ff:ff:ff:ff:ff) tell 10.200.0.101, length 28
0x0000: 0001 0800 0604 0001 fa16 3e0c b0a3 0ac8 ..........>.....
0x0010: 0065 ffff ffff ffff 0ac8 0065 .e.........e
09:28:07.546915 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.200.0.101 (ff:ff:ff:ff:ff:ff) tell 10.200.0.101, length 28
0x0000: 0001 0800 0604 0001 fa16 3e0c b0a3 0ac8 ..........>.....
0x0010: 0065 ffff ffff ffff 0ac8 0065 .e.........e

I also validated that the dnsmasq hosts file has the mac address of the instance.

[root@mitaka1 tmp(keystone_admin)]# ps -efa | grep tape90b6bfd-3c
nobody 11028 1 0 Feb06 ? 00:00:00 dnsmasq --no-hosts --no-resolv --strict-order --except-interface=lo --pid-file=/var/lib/neutron/dhcp/4c35a314-a986-48ac-9191-ed86edf656eb/pid --dhcp-hostsfile=/var/lib/neutron/dhcp/4c35a314-a986-48ac-9191-ed86edf656eb/host --addn-hosts=/var/lib/neutron/dhcp/4c35a314-a986-48ac-9191-ed86edf656eb/addn_hosts --dhcp-optsfile=/var/lib/neutron/dhcp/4c35a314-a986-48ac-9191-ed86edf656eb/opts --dhcp-leasefile=/var/lib/neutron/dhcp/4c35a314-a986-48ac-9191-ed86edf656eb/leases --dhcp-match=set:ipxe,175 --bind-interfaces --interface=tape90b6bfd-3c --dhcp-range=set:tag0,10.200.0.0,static,86400s --dhcp-option-force=option:mtu,1450 --dhcp-lease-max=256 --conf-file= --domain=openstacklocal

[root@mitaka1 tmp(keystone_admin)]# cat /var/lib/neutron/dhcp/4c35a314-a986-48ac-9191-ed86edf656eb/host
fa:16:3e:3d:4f:05,host-10-200-0-100.openstacklocal,10.200.0.100
fa:16:3e:df:05:ee,host-10-200-0-102.openstacklocal,10.200.0.102

My instance is 10.1.0.102

[root@mitaka1 tmp(keystone_admin)]# nova show 6354eaf0-4502-40ef-9c46-90cacf7a5743
+--------------------------------------+-----------------------------------------------------------+
| Property | Value |
+--------------------------------------+-----------------------------------------------------------+
| OS-DCF:diskConfig | AUTO |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | mitaka1.jthomsonf5.com |
| OS-EXT-SRV-ATTR:hypervisor_hostname | mitaka1.jthomsonf5.com |
| OS-EXT-SRV-ATTR:instance_name | instance-00000004 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2017-02-07T14:41:00.000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2017-02-07T14:40:42Z |
| flavor | m1.bigip.large-4x8 (dd902c27-ac9a-459f-95f8-92f71e9e92e3) |
| hostId | c6b803be37ae121e52b89856ec4d430e8fdc4ae8967d114e6b6eb925 |
| id | 6354eaf0-4502-40ef-9c46-90cacf7a5743 |
| image | BIG-IP 12.1.2-All (2bf3171d-2dc4-4ffc-99ac-94dadb0e9246) |
| key_name | - |
| metadata | {} |
| mynet1 network | 10.100.0.103, 10.1.0.173 |
| mynet2 network | 10.200.0.102 |
| name | s2 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | james-allow |
| status | ACTIVE |
| tenant_id | 31e64a9a4ee84c22a88fa4ac50d128e0 |
| updated | 2017-02-07T14:43:57Z |
| user_id | 8ea7a15a05ea4309b654bf8f3807e1b5 |
+--------------------------------------+-----------------------------------------------------------+

Maybe the DHCP request needs some sort of a retry if it doesn't get a response?
Let me know what else you need. I can pretty easily replicate it.

allow for disabling the metadata lookups

the get_metadata_service_url function in openstack-datasource.sh can introduce nearly a 30 minute delay in booting instances if either the normal or the backup metadata service urls are inaccessible (as they are in the Seattle VIO installation).

Provide for a way to completely disable the metadata lookups in the JSON blob so that the scripts will immediately fallback to using user-data and meta-data files that it has already discovered in a config drive.

RFE: handling of network and vlan names with unsupported characters (ie: spaces)

Hi

Some times deployments will have network names which contain spaces or other incompatible characters. I find that we have to be flexible and support them: If HEAT templates do work with them the BIG-IP should be able to cope with them too.

The next commit adds a function called normalize_name and minor modifications to os-functions/os-network.sh which overcomes this problem by replacing the incompatible characters with a "-". Unfortunately tmsh/GUI don't indicate which characters are allowed for vlans/selfips. For the time being I've just added "space" to the normalize_name function.

This proposed change has been uploaded to my fork https://github.com/alonsocamaro/f5-openstack-image-prep.git in commit d8a87ab

Please add this or analogous change.

Many thanks!

vlan name and prefix should be meaningful in startup script

The startup script function os-functions/openstack-network.sh should assign a better default vlan prefix if none is given in the user-data script. The current default is 'openstack-network-', but this should be stripped down to either be user provided or assigned with the default.

Can't patch the BIG-IP image

Hello,

I am trying to patch the BIGIP-11.6.1.0.0.317.ALL.qcow2.zip image to run BIG-IP on Openstack. After running :

python ve_image_sync.py -i /home/james/BIGIP-11.6.1.0.0.317.qcow2

or

sudo /bin/bash patch-image.sh -s /home/james/f5-openstack-image-prep/lib/f5_image_prep/
startup.tar -f /home/james/BIGIP-11.6.1.0.0.317.qcow2

the image is not patched. The script runs well but the image is the same as the original.

The output is here

sudo /bin/bash patch-image.sh -s /home/james/f5-openstack-image-prep/lib/f5_image_prep/
startup.tar -f /home/james/BIGIP-11.6.1.0.0.317.qcow2 /home/james/BIGIP-11.6.1.0.0.317.qcow2

  • '[' -n '' ']'

  • echo 'BASE_ISO_FILE : '
    BASE_ISO_FILE :

  • '[' -n '' ']'

  • check_oldfile_full_path

  • '[' -f /home/james/BIGIP-11.6.1.0.0.317.qcow2 ']'
    ++ basename /home/james/BIGIP-11.6.1.0.0.317.qcow2

  • ofname=BIGIP-11.6.1.0.0.317.qcow2

  • '[' -z ']'
    ++ newfilename BIGIP-11.6.1.0.0.317.qcow2
    +++ basename BIGIP-11.6.1.0.0.317.qcow2
    ++ local ofname=BIGIP-11.6.1.0.0.317.qcow2
    ++ '[' -n '' ']'
    ++ local hotfixisofile=
    ++ '[' -z '' ']'
    +++ echo BIGIP-11.6.1.0.0.317.qcow2
    +++ sed 's/(.*).qcow2/\1-OpenStack.qcow2/'
    ++ newfile=BIGIP-11.6.1.0.0.317-OpenStack.qcow2
    ++ echo BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • newfile=BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • cp /home/james/BIGIP-11.6.1.0.0.317.qcow2 /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • sleep 2

  • qemu-nbd -d /dev/nbd0
    /dev/nbd0 disconnected

  • sleep 2

  • qemu-nbd --connect=/dev/nbd0 /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • sleep 2

  • pvscan
    PV /dev/sda5 VG ubuntu-vg lvm2 [49.52 GiB / 0 free]
    Total: 1 [49.52 GiB] / in use: 1 [49.52 GiB] / in no VG: 0 [0 ]

  • sleep 2

  • echo 'The following command may cause '''Can'''t deactivate''' messages.'
    The following command may cause 'Can't deactivate' messages.

  • echo 'These do not necessarily indicate a problem.' [550/1987]
    These do not necessarily indicate a problem.

  • vgchange -ay
    2 logical volume(s) in volume group "ubuntu-vg" now active

  • sleep 2

  • mkdir -p /mnt/bigip-config

  • '[' -n '' ']'

  • echo 'Waiting 15 seconds'
    Waiting 15 seconds

  • sleep 15

  • umount /mnt/bigip-config
    umount: /mnt/bigip-config: not mounted

  • '[' 32 -eq 1 ']'

  • umount /mnt/bigip-shared
    umount: /mnt/bigip-shared: mountpoint not found

  • '[' 32 -eq 1 ']'
    ++ get_dev set.1._config
    ++ ls -l /dev/vg-db-hda
    ++ cut -d/ -f2-
    ++ cut '-d>' -f2
    ls: cannot access '/dev/vg-db-hda': No such file or directory
    ++ grep set.1._config

  • mount /dev/ /mnt/bigip-config
    mount: /dev is not a block device

  • inject_files

  • '[' -f /home/james/f5-openstack-image-prep/lib/f5_image_prep/startup.tar ']'

  • tar -xf /home/james/f5-openstack-image-prep/lib/f5_image_prep/startup.tar -C /mnt/bigip-config/

  • true

  • touch /mnt/bigip-config/firstboot

  • '[' -f none ']'

  • '[' -n '' ']'

  • '[' -n '' ']'

  • sleep 2

  • umount /mnt/bigip-config
    umount: /mnt/bigip-config: not mounted

  • sleep 2

  • '[' -n '' ']'

  • sleep 2

  • vgchange -an

    Logical volume ubuntu-vg/root contains a filesystem in use.
    Can't deactivate volume group "ubuntu-vg" with 2 open logical volume(s)

  • sleep 2

  • qemu-nbd -d /dev/nbd0
    /dev/nbd0 disconnected

  • echo 'Patched image located at /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2'
    Patched image located at /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • set +x

Any help will be appreciated.

Regards.

provide support for wc_notify

Heat offers a pattern where you can establish a wait condition and a wait condition handle. Then, provide that url to a shell script so that the script can notify heat when the setup of the vm resource is complete

https://docs.openstack.org/developer/heat/template_guide/software_deployment.html#signals-and-wait-conditions

This is fairly easy to do with cloud-init on bigip v13 or greater, but is not possible on bigip <13 using the JSON blob and gruber script.

Provide for a way (like another key in the JSON payload) that allows the boot scripts to notify heat when the bigip vm is complete.

When 169.254.169.254 is not available wrong URL is returned by get_metadata_service_url

Hi

In the get_metadata_service_url function...

  • the first time metadata_url is set to: http://$OS_METADATA_SERVICE_HOST/$OS_METADATA_SERVICE_USER_DATA_PATH
  • the second time metadata_url is set to http://$dhcp_server_address/${OS_METADATA_USER_DATA_PATH}

Note that the name of the PATH variable is different. This causes the onboarding script to fail as shown below.

Regards

 Ulises

[root@localhost:NO LICENSE:Standalone] os-functions # get_metadata_service_url
+ get_metadata_service_url
+ local OS_METADATA_SERVICE_HOST=169.254.169.254
+ local OS_METADATA_SERVICE_USER_DATA_PATH=latest/user-data
+ local metadata_url=http://169.254.169.254/latest/user-data
+ test_metadata_service http://169.254.169.254/latest/user-data
+ curl -s http://169.254.169.254/latest/user-data
+ return 7
+ [[ 7 != 0 ]]
++ get_dhcp_server_address
+++ awk '/dhcp-server-identifier/ { print $3 }' /var/lib/dhclient/dhclient.leases
+++ tr -d ';'
+++ tail -1
++ echo -n 135.109.211.161
+ dhcp_server_address=135.109.211.161
+ log 'Metadata server at http://169.254.169.254/latest/user-data is not available, trying 135.109.211.161 instead...'
+ echo 'Metadata server at http://169.254.169.254/latest/user-data is not available, trying 135.109.211.161 instead...'
+ eval 'logger -t openstack-init'
++ logger -t openstack-init
+ metadata_url=http://135.109.211.161/
+ test_metadata_service http://135.109.211.161/
+ curl -s http://135.109.211.161/
+ return 0
+ [[ 0 != 0 ]]
+ echo http://135.109.211.161/
http://135.109.211.161/

setup.py install does not require openstack clients

The setup.py installation of this repo does not require the proper python client libraries for glance and keystone. This is currently done in the f5-openstack-heat template with an apt-get install (which is not correct). We'll move it to the setup.py here and then update the heat template to remove that installation. The other big point is that we are installation from latest with apt-get, so we're unsure of what we're getting when we do the heat template install. With the setup.py change, we'll fix it to a particular version that is tested and works.

ve_image_sync.py attempts to upload an image as public by default

If Heat template attempts to upload an image to Glance and that user doesn't have the permissions to upload an image as public, the upload will fail. We need to parameterize this functionality and allow a user to set it as public if they wish. The default behavior will be as non-public. This will be just a boolean.

cloud-init: unexpected messages are printed in hypervisor's console

When cloud-init runs, error messages like the following may be printed in the hypervisor's console:

cloudinit_issue2

These error messages come from the "injected during image creation" code. Namely /config/os-functions/openstack-datasource.sh
It initially copied user data (from configdrive) as a file directly into its own copy. The user data from configdrive is in plain text, but openstack-datasource.sh assumes it's in JSON format. As such it tries to parse it and extract JSON values, but perl script used to do that throws an error.

Here is the repro:
[root@ian-1300-22-cfgdrive:NO LICENSE:Standalone] os-functions # function get_json_value() {

echo -n $(perl -MJSON -ne "$value = decode_json($_)->$1;
$value =~ s/([^a-zA-Z0-9])/$1/g; print $value" $2)
}
[root@ian-1300-22-cfgdrive:NO LICENSE:Standalone] os-functions # test
Found config drive
Found local user data: /config/user-data.json
Successfully called get_user_data
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "#!/bin/bashecho "IAN...") at -e line 1, <> line 1.

This was originally reported in internal F5 issue bz599218.

Spin up VE using patched image

Finally successfully patched VE using this procedure:

https://github.com/F5Networks/f5-openstack-image-prep/blob/master/README.rst

the start up is the tar file from this location:
https://github.com/F5Networks/f5-openstack-image-prep/blob/master/lib/f5_image_prep/startup.tar

Then use the heat template from supported 4-nic implementation:
https://github.com/F5Networks/f5-openstack-heat/tree/master/f5_supported/ve/common

Run into couple issues:

  1. The flavor with 139G disk is no longer working, it has to be 159G with this patched image?
  2. after VE spinned up, it cannot be accessed using default password, password assigned, or the one from console r: xxxxx a: yyyy. I did manage to ssh into it remotely using private key, but my customer may not be able to do that. They still need actual password to access VE.
  3. the data interfaces, only one out three are properly configured.

Thank you! - Haitao

Can't patch the BIG-IP image

Hello,

I am trying to patch the BIGIP-11.6.1.0.0.317.ALL.qcow2.zip image to run BIG-IP on Openstack. After running :
python ve_image_sync.py -i /home/james/BIGIP-11.6.1.0.0.317.qcow2
or
sudo /bin/bash patch-image.sh -s /home/james/f5-openstack-image-prep/lib/f5_image_prep/
startup.tar -f /home/james/BIGIP-11.6.1.0.0.317.qcow2

the image is not patched. The script runs well but the image is the same as the original.

The output is here

sudo /bin/bash patch-image.sh -s /home/james/f5-openstack-image-prep/lib/f5_image_prep/
startup.tar -f /home/james/BIGIP-11.6.1.0.0.317.qcow2
/home/james/BIGIP-11.6.1.0.0.317.qcow2

  • '[' -n '' ']'

  • echo 'BASE_ISO_FILE : '
    BASE_ISO_FILE :

  • '[' -n '' ']'

  • check_oldfile_full_path

  • '[' -f /home/james/BIGIP-11.6.1.0.0.317.qcow2 ']'
    ++ basename /home/james/BIGIP-11.6.1.0.0.317.qcow2

  • ofname=BIGIP-11.6.1.0.0.317.qcow2

  • '[' -z ']'
    ++ newfilename BIGIP-11.6.1.0.0.317.qcow2
    +++ basename BIGIP-11.6.1.0.0.317.qcow2
    ++ local ofname=BIGIP-11.6.1.0.0.317.qcow2
    ++ '[' -n '' ']'
    ++ local hotfixisofile=
    ++ '[' -z '' ']'
    +++ echo BIGIP-11.6.1.0.0.317.qcow2
    +++ sed 's/(.*).qcow2/\1-OpenStack.qcow2/'
    ++ newfile=BIGIP-11.6.1.0.0.317-OpenStack.qcow2
    ++ echo BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • newfile=BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • cp /home/james/BIGIP-11.6.1.0.0.317.qcow2 /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • sleep 2

  • qemu-nbd -d /dev/nbd0
    /dev/nbd0 disconnected

  • sleep 2

  • qemu-nbd --connect=/dev/nbd0 /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • sleep 2

  • pvscan
    PV /dev/sda5 VG ubuntu-vg lvm2 [49.52 GiB / 0 free]
    Total: 1 [49.52 GiB] / in use: 1 [49.52 GiB] / in no VG: 0 [0 ]

  • sleep 2

  • echo 'The following command may cause '''Can'''t deactivate''' messages.'
    The following command may cause 'Can't deactivate' messages.

  • echo 'These do not necessarily indicate a problem.' [550/1987]
    These do not necessarily indicate a problem.

  • vgchange -ay
    2 logical volume(s) in volume group "ubuntu-vg" now active

  • sleep 2

  • mkdir -p /mnt/bigip-config

  • '[' -n '' ']'

  • echo 'Waiting 15 seconds'
    Waiting 15 seconds

  • sleep 15

  • umount /mnt/bigip-config
    umount: /mnt/bigip-config: not mounted

  • '[' 32 -eq 1 ']'

  • umount /mnt/bigip-shared
    umount: /mnt/bigip-shared: mountpoint not found

  • '[' 32 -eq 1 ']'
    ++ get_dev set.1._config
    ++ ls -l /dev/vg-db-hda
    ++ cut -d/ -f2-
    ++ cut '-d>' -f2
    ls: cannot access '/dev/vg-db-hda': No such file or directory
    ++ grep set.1._config

  • mount /dev/ /mnt/bigip-config
    mount: /dev is not a block device

  • inject_files

  • '[' -f /home/james/f5-openstack-image-prep/lib/f5_image_prep/startup.tar ']'

  • tar -xf /home/james/f5-openstack-image-prep/lib/f5_image_prep/startup.tar -C /mnt/bigip-config/

  • true

  • touch /mnt/bigip-config/firstboot

  • '[' -f none ']'

  • '[' -n '' ']'

  • '[' -n '' ']'

  • sleep 2

  • umount /mnt/bigip-config
    umount: /mnt/bigip-config: not mounted

  • sleep 2

  • '[' -n '' ']'

  • sleep 2

  • vgchange -an

    Logical volume ubuntu-vg/root contains a filesystem in use.
    Can't deactivate volume group "ubuntu-vg" with 2 open logical volume(s)

  • sleep 2

  • qemu-nbd -d /dev/nbd0
    /dev/nbd0 disconnected

  • echo 'Patched image located at /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2'
    Patched image located at /home/james/.f5-image-prep/tmp/BIGIP-11.6.1.0.0.317-OpenStack.qcow2

  • set +x

Any help will be appreciated.

Regards.

get_licensed_modules does not find GTM/DNS license

In the os-license.sh:get_licensed_modules function

enabled_modules variable returns the GTM/DNS license as "dnsgtm"

# enabled_modules=$(awk '/^mod.*enabled/ { print $1 }' /config/bigip.license | sed 's/mod_//' | tr '\n' ' ')
# echo $enabled_modules
ltm ilx aml dnsgtm cgnat asm apm am afw afm


and provisionable_modules / get_supported_modules funtion returns the following tokens

# get_supported_modules
afm am apm asm avr fps gtm ilx lc ltm pem swg

which makes the following comparison to do not work

if [[ "$provisionable_modules" == *"$module"* ]]; then

issue when do pip install image-prep

Run into issue when try following command and error messages as following:

sudo pip install git:https://github.com/F5Networks/f5-openstack-image-prep

Collecting git:https://github.com/F5Networks/f5-openstack-image-prep
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/lib/python2.7/site-packages/pip/commands/install.py", line 324, in run
requirement_set.prepare_files(finder)
File "/usr/lib/python2.7/site-packages/pip/req/req_set.py", line 380, in prepare_files
ignore_dependencies=self.ignore_dependencies))
File "/usr/lib/python2.7/site-packages/pip/req/req_set.py", line 620, in _prepare_file
session=self.session, hashes=hashes)
File "/usr/lib/python2.7/site-packages/pip/download.py", line 805, in unpack_url
unpack_vcs_link(link, location)
File "/usr/lib/python2.7/site-packages/pip/download.py", line 479, in unpack_vcs_link
vcs_backend.unpack(location)
File "/usr/lib/python2.7/site-packages/pip/vcs/init.py", line 286, in unpack
self.obtain(location)
File "/usr/lib/python2.7/site-packages/pip/vcs/git.py", line 131, in obtain
url, rev = self.get_url_rev()
File "/usr/lib/python2.7/site-packages/pip/vcs/git.py", line 272, in get_url_rev
url, rev = super(Git, self).get_url_rev()
File "/usr/lib/python2.7/site-packages/pip/vcs/init.py", line 138, in get_url_rev
assert '+' in self.url, error_message % self.url
AssertionError: Sorry, 'git:https://github.com/F5Networks/f5-openstack-image-prep' is a malformed VCS url. The format is +://, e.g. svn+http://myrepo/svn/MyApp#egg=MyApp

Thank you for all the help! - Haitao

requirement installation failed

14.0.4 Ubuntu, requirement installation failed. Detailed log below:

root@ubuntu-image-server:~# pip install -r requirements.func.test.txt
Downloading/unpacking git+https://github.com/F5Networks/f5-openstack-test.git@liberty (from -r requirements.func.test.txt (line 2))
Cloning https://github.com/F5Networks/f5-openstack-test.git (to liberty) to /tmp/pip-B_U_mL-build
Running setup.py (path:/tmp/pip-B_U_mL-build/setup.py) egg_info for package from git+https://github.com/F5Networks/f5-openstack-test.git@liberty

Downloading/unpacking pytest-cov (from -r requirements.func.test.txt (line 3))
Downloading pytest_cov-2.5.1-py2.py3-none-any.whl
Downloading/unpacking Sphinx==1.3.5 (from -r requirements.func.test.txt (line 4))
Downloading Sphinx-1.3.5-py2.py3-none-any.whl (1.5MB): 1.5MB downloaded
Downloading/unpacking pytest==2.9.1 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading pytest-2.9.1-py2.py3-none-any.whl (161kB): 161kB downloaded
Downloading/unpacking f5-sdk==2.3.2 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading f5-sdk-2.3.2.tar.gz (111kB): 111kB downloaded
Running setup.py (path:/tmp/pip_build_root/f5-sdk/setup.py) egg_info for package f5-sdk
('install_requires', ['six>=1.9.0', 'six<2.0.0', 'f5-icontrol-rest>=1.3.0', 'f5-icontrol-rest<2.0.0'])

warning: no files found matching 'README.md'
warning: no files found matching 'SUPPORT'

Downloading/unpacking python-neutronclient==3.1.1 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 1% 4.1 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 3% 8.2 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 5% 12k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 7% 16k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 8% 20k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 10% 24k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 12% 28k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 14% 32k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 16% 36k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 17% 40k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 19% 45k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 21% 49k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 23% 53k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 24% 57k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 26% 61k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 28% 65k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 30% 69k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 32% 73k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 33% 77k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 35% 81k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 37% 86k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 39% 90k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 41% 94k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 42% 98k Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 44% 102 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 46% 106 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 48% 110 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 49% 114 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 51% 118 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 53% 122 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 55% 126 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 57% 131 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 58% 135 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 60% 139 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 62% 143 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 64% 147 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 66% 151 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 67% 155 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 69% 159 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 71% 163 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 73% 167 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 74% 172 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 76% 176 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 78% 180 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 80% 184 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 82% 188 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 83% 192 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 85% 196 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 87% 200 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 89% 204 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 91% 208 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 92% 212 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 94% 217 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 96% 221 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 98% 225 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 99% 229 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 100% 229 Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): Downloading python_neutronclient-3.1.1-py2.py3-none-any.whl (229kB): 229kB downloaded
Downloading/unpacking python-keystoneclient==1.7.2 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 0% 4. Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 1% 8. Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 2% 12 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 3% 16 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 4% 20 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 5% 24 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 6% 28 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 7% 32 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 8% 36 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 9% 40 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 10% 45 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 11% 49 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 12% 53 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 13% 57 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 14% 61 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 15% 65 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 16% 69 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 17% 73 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 18% 77 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 19% 81 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 19% 86 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 20% 90 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 21% 94 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 22% 98 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 23% 10 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 24% 10 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 25% 11 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 26% 11 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 27% 11 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 28% 12 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 29% 12 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 30% 13 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 31% 13 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 32% 13 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 33% 14 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 34% 14 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 35% 15 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 36% 15 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 37% 15 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 38% 16 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 38% 16 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 39% 17 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 40% 17 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 41% 18 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 42% 18 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 43% 18 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 44% 19 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 45% 19 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 46% 20 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 47% 20 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 48% 20 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 49% 21 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 50% 21 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 51% 22 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 52% 22 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 53% 22 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 54% 23 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 55% 23 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 56% 24 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 57% 24 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 58% 24 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 58% 25 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 59% 25 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 60% 26 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 61% 26 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 62% 27 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 63% 27 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 64% 27 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 65% 28 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 66% 28 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 67% 29 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 68% 29 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 69% 29 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 70% 30 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 71% 30 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 72% 31 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 73% 31 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 74% 31 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 75% 32 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 76% 32 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 77% 33 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 77% 33 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 78% 33 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 79% 34 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 80% 34 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 81% 35 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 82% 35 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 83% 36 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 84% 36 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 85% 36 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 86% 37 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 87% 37 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 88% 38 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 89% 38 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 90% 38 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 91% 39 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 92% 39 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 93% 40 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 94% 40 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 95% 40 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 96% 41 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 97% 41 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 97% 42 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 98% 42 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 99% 43 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 100% 43 Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): Downloading python_keystoneclient-1.7.2-py2.py3-none-any.whl (430kB): 430kB downloaded
Downloading/unpacking python-heatclient==0.8.0 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading python_heatclient-0.8.0-py2.py3-none-any.whl (139kB): 139kB downloaded
Downloading/unpacking python-glanceclient==1.2.0 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 2% 4.1k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 4% 8.2k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 6% 12kB Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 58% 102k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 60% 106k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 62% 110k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 64% 114k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 67% 118k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 69% 122k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 71% 126k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 74% 131k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 76% 135k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 78% 139k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 81% 143k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 83% 147k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 85% 151k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 88% 155k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 90% 159k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 92% 163k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 95% 167k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 97% 172k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 99% 176k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 100% 176k Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): Downloading python_glanceclient-1.2.0-py2.py3-none-any.whl (176kB): 176kB downloaded
Downloading/unpacking iso8601==0.1.11 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading iso8601-0.1.11-py2.py3-none-any.whl
Downloading/unpacking pytz==2015.7 (from f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading pytz-2015.7-py2.py3-none-any.whl (476kB): 476kB downloaded
Downloading/unpacking coverage>=3.7.1 (from pytest-cov->-r requirements.func.test.txt (line 3))
Downloading coverage-4.4.1.tar.gz (369kB): 369kB downloaded
Running setup.py (path:/tmp/pip_build_root/coverage/setup.py) egg_info for package coverage

warning: no previously-included files found matching 'ci/appveyor.token'
no previously-included directories found matching 'doc/_build'
no previously-included directories found matching 'tests/eggsrc/build'
no previously-included directories found matching 'tests/eggsrc/dist'
no previously-included directories found matching 'tests/eggsrc/*.egg-info'
warning: no previously-included files matching '*.py[co]' found anywhere in distribution

Downloading/unpacking babel>=1.3,!=2.0 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading Babel-2.4.0-py2.py3-none-any.whl (6.8MB): 6.8MB downloaded
Downloading/unpacking Jinja2>=2.3 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading Jinja2-2.9.6-py2.py3-none-any.whl (340kB): 340kB downloaded
Downloading/unpacking alabaster>=0.7,<0.8 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading alabaster-0.7.10-py2.py3-none-any.whl
Downloading/unpacking sphinx-rtd-theme>=0.1,<2.0 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading sphinx_rtd_theme-0.2.4-py2.py3-none-any.whl (1.4MB): 1.4MB downloaded
Requirement already satisfied (use --upgrade to upgrade): six>=1.4 in /usr/lib/python2.7/dist-packages (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading/unpacking Pygments>=2.0 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading Pygments-2.2.0-py2.py3-none-any.whl (841kB): 841kB downloaded
Downloading/unpacking snowballstemmer>=1.1 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading snowballstemmer-1.2.1-py2.py3-none-any.whl (64kB): 64kB downloaded
Downloading/unpacking docutils>=0.11 (from Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading docutils-0.13.1-py2-none-any.whl (537kB): 537kB downloaded
Downloading/unpacking py>=1.4.29 (from pytest==2.9.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading py-1.4.33-py2.py3-none-any.whl (83kB): 83kB downloaded
Downloading/unpacking f5-icontrol-rest>=1.3.0 (from f5-sdk==2.3.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading f5-icontrol-rest-1.3.0.tar.gz
Running setup.py (path:/tmp/pip_build_root/f5-icontrol-rest/setup.py) egg_info for package f5-icontrol-rest

warning: no files found matching 'README.md'

Downloading/unpacking oslo.utils>=2.0.0,!=2.6.0 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading oslo.utils-3.25.1-py2.py3-none-any.whl (97kB): 97kB downloaded
Downloading/unpacking netaddr>=0.7.12,!=0.7.16 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading netaddr-0.7.19-py2.py3-none-any.whl (1.6MB): 1.6MB downloaded
Downloading/unpacking cliff>=1.14.0 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading cliff-2.7.0-py2-none-any.whl (63kB): 63kB downloaded
Downloading/unpacking oslo.serialization>=1.4.0 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading oslo.serialization-2.18.0-py2.py3-none-any.whl
Downloading/unpacking requests>=2.5.2,!=2.8.0 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading requests-2.14.2-py2.py3-none-any.whl (560kB): 560kB downloaded
Downloading/unpacking oslo.i18n>=1.5.0 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading oslo.i18n-3.15.1-py2.py3-none-any.whl (42kB): 42kB downloaded
Downloading/unpacking simplejson>=2.2.0 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading simplejson-3.10.0.tar.gz (77kB): 77kB downloaded
Running setup.py (path:/tmp/pip_build_root/simplejson/setup.py) egg_info for package simplejson

Downloading/unpacking pbr>=1.6 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading pbr-3.0.1-py2.py3-none-any.whl (99kB): 99kB downloaded
Requirement already satisfied (use --upgrade to upgrade): argparse in /usr/lib/python2.7 (from python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading/unpacking stevedore>=1.5.0 (from python-keystoneclient==1.7.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading stevedore-1.21.0-py2.py3-none-any.whl
Downloading/unpacking oslo.config>=2.3.0 (from python-keystoneclient==1.7.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading oslo.config-4.1.1-py2.py3-none-any.whl (103kB): 103kB downloaded
Downloading/unpacking debtcollector>=0.3.0 (from python-keystoneclient==1.7.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading debtcollector-1.13.0-py2.py3-none-any.whl
Downloading/unpacking PrettyTable>=0.7,<0.8 (from python-keystoneclient==1.7.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading prettytable-0.7.2.zip
Running setup.py (path:/tmp/pip_build_root/PrettyTable/setup.py) egg_info for package PrettyTable

Downloading/unpacking python-swiftclient>=2.2.0 (from python-heatclient==0.8.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading python_swiftclient-3.3.0-py2.py3-none-any.whl (72kB): 72kB downloaded
Downloading/unpacking PyYAML>=3.1.0 (from python-heatclient==0.8.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading PyYAML-3.12.tar.gz (253kB): 253kB downloaded
Running setup.py (path:/tmp/pip_build_root/PyYAML/setup.py) egg_info for package PyYAML

Downloading/unpacking warlock>=1.0.1,<2 (from python-glanceclient==1.2.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading warlock-1.3.0.tar.gz
Running setup.py (path:/tmp/pip_build_root/warlock/setup.py) egg_info for package warlock

Downloading/unpacking MarkupSafe>=0.23 (from Jinja2>=2.3->Sphinx==1.3.5->-r requirements.func.test.txt (line 4))
Downloading MarkupSafe-1.0.tar.gz
Running setup.py (path:/tmp/pip_build_root/MarkupSafe/setup.py) egg_info for package MarkupSafe

Downloading/unpacking monotonic>=0.6 (from oslo.utils>=2.0.0,!=2.6.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading monotonic-1.3-py2.py3-none-any.whl
Downloading/unpacking funcsigs>=0.4 (from oslo.utils>=2.0.0,!=2.6.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading funcsigs-1.0.2-py2.py3-none-any.whl
Downloading/unpacking pyparsing>=2.1.0 (from oslo.utils>=2.0.0,!=2.6.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB): 56kB downloaded
Downloading/unpacking netifaces>=0.10.4 (from oslo.utils>=2.0.0,!=2.6.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading netifaces-0.10.5.tar.gz
Running setup.py (path:/tmp/pip_build_root/netifaces/setup.py) egg_info for package netifaces

Downloading/unpacking unicodecsv>=0.8.0 (from cliff>=1.14.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading unicodecsv-0.14.1.tar.gz
Running setup.py (path:/tmp/pip_build_root/unicodecsv/setup.py) egg_info for package unicodecsv

Downloading/unpacking cmd2>=0.6.7 (from cliff>=1.14.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading cmd2-0.7.0.tar.gz (371kB): 371kB downloaded
Running setup.py (path:/tmp/pip_build_root/cmd2/setup.py) egg_info for package cmd2
/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'docs_require'
warnings.warn(msg)

Downloading/unpacking msgpack-python>=0.4.0 (from oslo.serialization>=1.4.0->python-neutronclient==3.1.1->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading msgpack-python-0.4.8.tar.gz (113kB): 113kB downloaded
Running setup.py (path:/tmp/pip_build_root/msgpack-python/setup.py) egg_info for package msgpack-python

Downloading/unpacking rfc3986>=0.3.1 (from oslo.config>=2.3.0->python-keystoneclient==1.7.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading rfc3986-1.0.0-py2.py3-none-any.whl
Downloading/unpacking wrapt>=1.7.0 (from debtcollector>=0.3.0->python-keystoneclient==1.7.2->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading wrapt-1.10.10.tar.gz
Running setup.py (path:/tmp/pip_build_root/wrapt/setup.py) egg_info for package wrapt

Downloading/unpacking futures>=3.0 (from python-swiftclient>=2.2.0->python-heatclient==0.8.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading futures-3.1.1-py2-none-any.whl
Downloading/unpacking jsonschema>=0.7,<3 (from warlock>=1.0.1,<2->python-glanceclient==1.2.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading jsonschema-2.6.0-py2.py3-none-any.whl
Downloading/unpacking jsonpatch>=0.10,<2 (from warlock>=1.0.1,<2->python-glanceclient==1.2.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading jsonpatch-1.15-py2.py3-none-any.whl
Downloading/unpacking functools32 (from jsonschema>=0.7,<3->warlock>=1.0.1,<2->python-glanceclient==1.2.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading functools32-3.2.3-2.zip
Running setup.py (path:/tmp/pip_build_root/functools32/setup.py) egg_info for package functools32

warning: no files found matching '*.txt'
no previously-included directories found matching 'build'
no previously-included directories found matching 'dist'
no previously-included directories found matching '.git*'

Downloading/unpacking jsonpointer>=1.9 (from jsonpatch>=0.10,<2->warlock>=1.0.1,<2->python-glanceclient==1.2.0->f5-openstack-test==0.2.0->-r requirements.func.test.txt (line 2))
Downloading jsonpointer-1.10-py2-none-any.whl
Installing collected packages: pytest-cov, Sphinx, pytest, f5-sdk, python-neutronclient, python-keystoneclient, python-heatclient, python-glanceclient, iso8601, pytz, f5-openstack-test, coverage, babel, Jinja2, alabaster, sphinx-rtd-theme, Pygments, snowballstemmer, docutils, py, f5-icontrol-rest, oslo.utils, netaddr, cliff, oslo.serialization, requests, oslo.i18n, simplejson, pbr, stevedore, oslo.config, debtcollector, PrettyTable, python-swiftclient, PyYAML, warlock, MarkupSafe, monotonic, funcsigs, pyparsing, netifaces, unicodecsv, cmd2, msgpack-python, rfc3986, wrapt, futures, jsonschema, jsonpatch, functools32, jsonpointer
Running setup.py install for f5-sdk
('install_requires', ['six>=1.9.0', 'six<2.0.0', 'f5-icontrol-rest>=1.3.0', 'f5-icontrol-rest<2.0.0'])

warning: no files found matching 'README.md'
warning: no files found matching 'SUPPORT'

Running setup.py install for f5-openstack-test

Running setup.py install for coverage
building 'coverage.tracer' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c coverage/ctracer/datastack.c -o build/temp.linux-x86_64-2.7/coverage/ctracer/datastack.o
In file included from coverage/ctracer/datastack.c:4:0:
coverage/ctracer/util.h:7:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
**
** Couldn't install with extension module, trying without it...
** BuildFailed: command 'x86_64-linux-gnu-gcc' failed with exit status 1
**

warning: no previously-included files found matching 'ci/appveyor.token'
no previously-included directories found matching 'doc/_build'
no previously-included directories found matching 'tests/eggsrc/build'
no previously-included directories found matching 'tests/eggsrc/dist'
no previously-included directories found matching 'tests/eggsrc/*.egg-info'
warning: no previously-included files matching '*.py[co]' found anywhere in distribution
Installing coverage2 script to /usr/local/bin
Installing coverage-2.7 script to /usr/local/bin
Installing coverage script to /usr/local/bin

Compiling /tmp/pip_build_root/Jinja2/jinja2/asyncfilters.py ...
File "/tmp/pip_build_root/Jinja2/jinja2/asyncfilters.py", line 7
async def auto_to_seq(value):
^
SyntaxError: invalid syntax

Compiling /tmp/pip_build_root/Jinja2/jinja2/asyncsupport.py ...
File "/tmp/pip_build_root/Jinja2/jinja2/asyncsupport.py", line 22
async def concat_async(async_gen):
^
SyntaxError: invalid syntax

Running setup.py install for f5-icontrol-rest

warning: no files found matching 'README.md'

Found existing installation: requests 2.2.1
Not uninstalling requests at /usr/lib/python2.7/dist-packages, owned by OS
Running setup.py install for simplejson
building 'simplejson._speedups' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c simplejson/_speedups.c -o build/temp.linux-x86_64-2.7/simplejson/_speedups.o
simplejson/_speedups.c:2:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
***************************************************************************
WARNING: The C extension could not be compiled, speedups are not enabled.
Failure information, if any, is above.
I'm retrying the build without the C extension now.
***************************************************************************

***************************************************************************
WARNING: The C extension could not be compiled, speedups are not enabled.
Plain-Python installation succeeded.
***************************************************************************

Running setup.py install for PrettyTable

Running setup.py install for PyYAML
checking if libyaml is compilable
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/check_libyaml.c -o build/temp.linux-x86_64-2.7/check_libyaml.o
build/temp.linux-x86_64-2.7/check_libyaml.c:2:18: fatal error: yaml.h: No such file or directory
#include <yaml.h>
^
compilation terminated.

libyaml is not found or a compiler error: forcing --without-libyaml
(if libyaml is installed correctly, you may need to
 specify the option --include-dirs or uncomment and
 modify the parameter include_dirs in setup.cfg)

Running setup.py install for warlock

Running setup.py install for MarkupSafe

building 'markupsafe._speedups' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c markupsafe/_speedups.c -o build/temp.linux-x86_64-2.7/markupsafe/_speedups.o
markupsafe/_speedups.c:12:20: fatal error: Python.h: No such file or directory
 #include <Python.h>
                    ^
compilation terminated.
==========================================================================
WARNING: The C extension could not be compiled, speedups are not enabled.
Failure information, if any, is above.
Retrying the build without the C extension now.


==========================================================================
WARNING: The C extension could not be compiled, speedups are not enabled.
Plain-Python installation succeeded.
==========================================================================

Running setup.py install for netifaces
checking for getifaddrs...found.
checking for getnameinfo...found.
checking for IPv6 socket IOCTLs...not found.
checking for optional header files...netash/ash.h netatalk/at.h netax25/ax25.h neteconet/ec.h netipx/ipx.h netpacket/packet.h linux/irda.h linux/atm.h linux/llc.h linux/tipc.h linux/dn.h.
checking whether struct sockaddr has a length field...no.
checking which sockaddr_xxx structs are defined...at ax25 in in6 ipx un ash ec ll atmpvc atmsvc dn irda llc.
checking for routing socket support...no.
checking for sysctl(CTL_NET...) support...no.
checking for netlink support...yes.
will use netlink to read routing table
building 'netifaces' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DNETIFACES_VERSION=0.10.5 -DHAVE_GETIFADDRS=1 -DHAVE_GETNAMEINFO=1 -DHAVE_NETASH_ASH_H=1 -DHAVE_NETATALK_AT_H=1 -DHAVE_NETAX25_AX25_H=1 -DHAVE_NETECONET_EC_H=1 -DHAVE_NETIPX_IPX_H=1 -DHAVE_NETPACKET_PACKET_H=1 -DHAVE_LINUX_IRDA_H=1 -DHAVE_LINUX_ATM_H=1 -DHAVE_LINUX_LLC_H=1 -DHAVE_LINUX_TIPC_H=1 -DHAVE_LINUX_DN_H=1 -DHAVE_SOCKADDR_AT=1 -DHAVE_SOCKADDR_AX25=1 -DHAVE_SOCKADDR_IN=1 -DHAVE_SOCKADDR_IN6=1 -DHAVE_SOCKADDR_IPX=1 -DHAVE_SOCKADDR_UN=1 -DHAVE_SOCKADDR_ASH=1 -DHAVE_SOCKADDR_EC=1 -DHAVE_SOCKADDR_LL=1 -DHAVE_SOCKADDR_ATMPVC=1 -DHAVE_SOCKADDR_ATMSVC=1 -DHAVE_SOCKADDR_DN=1 -DHAVE_SOCKADDR_IRDA=1 -DHAVE_SOCKADDR_LLC=1 -DHAVE_PF_NETLINK=1 -I/usr/include/python2.7 -c netifaces.c -o build/temp.linux-x86_64-2.7/netifaces.o
netifaces.c:1:20: fatal error: Python.h: No such file or directory
#include <Python.h>
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Complete output from command /usr/bin/python -c "import setuptools, tokenize;file='/tmp/pip_build_root/netifaces/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-DnYmT6-record/install-record.txt --single-version-externally-managed --compile:
running install

running build

running build_ext

checking for getifaddrs...found.

checking for getnameinfo...found.

checking for IPv6 socket IOCTLs...not found.

checking for optional header files...netash/ash.h netatalk/at.h netax25/ax25.h neteconet/ec.h netipx/ipx.h netpacket/packet.h linux/irda.h linux/atm.h linux/llc.h linux/tipc.h linux/dn.h.

checking whether struct sockaddr has a length field...no.

checking which sockaddr_xxx structs are defined...at ax25 in in6 ipx un ash ec ll atmpvc atmsvc dn irda llc.

checking for routing socket support...no.

checking for sysctl(CTL_NET...) support...no.

checking for netlink support...yes.

will use netlink to read routing table

building 'netifaces' extension

x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DNETIFACES_VERSION=0.10.5 -DHAVE_GETIFADDRS=1 -DHAVE_GETNAMEINFO=1 -DHAVE_NETASH_ASH_H=1 -DHAVE_NETATALK_AT_H=1 -DHAVE_NETAX25_AX25_H=1 -DHAVE_NETECONET_EC_H=1 -DHAVE_NETIPX_IPX_H=1 -DHAVE_NETPACKET_PACKET_H=1 -DHAVE_LINUX_IRDA_H=1 -DHAVE_LINUX_ATM_H=1 -DHAVE_LINUX_LLC_H=1 -DHAVE_LINUX_TIPC_H=1 -DHAVE_LINUX_DN_H=1 -DHAVE_SOCKADDR_AT=1 -DHAVE_SOCKADDR_AX25=1 -DHAVE_SOCKADDR_IN=1 -DHAVE_SOCKADDR_IN6=1 -DHAVE_SOCKADDR_IPX=1 -DHAVE_SOCKADDR_UN=1 -DHAVE_SOCKADDR_ASH=1 -DHAVE_SOCKADDR_EC=1 -DHAVE_SOCKADDR_LL=1 -DHAVE_SOCKADDR_ATMPVC=1 -DHAVE_SOCKADDR_ATMSVC=1 -DHAVE_SOCKADDR_DN=1 -DHAVE_SOCKADDR_IRDA=1 -DHAVE_SOCKADDR_LLC=1 -DHAVE_PF_NETLINK=1 -I/usr/include/python2.7 -c netifaces.c -o build/temp.linux-x86_64-2.7/netifaces.o

netifaces.c:1:20: fatal error: Python.h: No such file or directory

#include <Python.h>

                ^

compilation terminated.

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;file='/tmp/pip_build_root/netifaces/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-DnYmT6-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/netifaces
Storing debug log for failure in /root/.pip/pip.log
root@ubuntu-image-server:~#

force_mgmt_mtu: leases file might have several entries

The /var/lib/dhclient/dhclient.leases might contain leases from several boots.

Although currently we only use dhcp once (it is disabled in consecutive times) this might be a problem which could be easily fixed by adding

| tail -n 1

after the awk command.

This might be needed if the workaround for sol12432 is to call force_mgmt_mtu on every boot as I suggest in #41

Change login user to imageprep

The login user that is used by heat templates is defined as image-prep, yet this is confusing and difficult to read in along path name. It should be changed to imageprep.

undercloud stack will not create for BigIP 12.0 image

The tlc cmd test_env will not complete in underclould situation with using 12.0 image. This command does not finish in the undercloud computer command:

2016-04-12 15:11:04.188045: + sudo virt-install -n ve -r 2048 -w network=ovs-br-ex,model=virtio -w network=ovs-br-test,model=virtio -w network=ovs-br-test,model=virtio --connect qemu:///system --disk path=/tmp/store/session/os_ready-BIGIP-12.0.0.0.0.606.qcow2,bus=virtio --disk path=/tmp/store/session/config.iso,device=cdrom,bus=ide,target=hdd --noautoconsole --os-type=Linux --os-variant=rhel6 --vcpus=2 --boot hd
2016-04-12 15:11:04.990463:
2016-04-12 15:11:04.990756: Starting install...
2016-04-12 15:11:04.991272: Creating domain... | 0 B 00:00
2016-04-12 15:11:05.002501: Domain creation completed.
2016-04-12 15:11:05.068562: + expect /home/testlab/undercloud/get_ve_mgmt_ip.exp
2016-04-12 15:11:05.068950: spawn sudo virsh --connect qemu:///system console ve
2016-04-12 15:11:05.079472: Connected to domain ve
2016-04-12 15:11:05.079792: Escape character is ^]
2016-04-12 15:13:04.860719:
2016-04-12 15:13:04.861528: BIG-IP 12.0.0 Build 0.0.606
2016-04-12 15:13:04.862139: Kernel 2.6.32-431.56.1.el6.f5.x86_64 on an x86_64
2016-04-12 15:13:04.862717: r: ZMTPCYHEXP a: MTTOVGMCNF
2016-04-12 15:13:04.863072:
2016-04-12 15:13:04.863619: localhost.localdomain login: root
2016-04-12 15:13:04.874691: Password:
2016-04-12 15:13:07.141654: Login incorrect
2016-04-12 15:13:07.142169:
config_drive has not yet been applied... sleeping 15 seconds
2016-04-12 15:13:22.147623: root
2016-04-12 15:13:22.148719: Password:
2016-04-12 15:13:24.414655: Login incorrect
2016-04-12 15:13:24.415170:
config_drive has not yet been applied... sleeping 15 seconds
2016-04-12 15:13:39.420595: root
2016-04-12 15:13:39.421174: Password:
2016-04-12 15:13:42.094691: Login incorrect
2016-04-12 15:13:42.095272:
config_drive has not yet been applied... sleeping 15 seconds
2016-04-12 15:13:57.100626: root
2016-04-12 15:13:57.111661: Password:
2016-04-12 15:13:58.806624:

All Inclusive JSON blob

It would be great if there was a JSON blob that identifies and provides an example of all of the fields that can be taken advantage of using the startup script.

Keystone authentication failure when patching images in Mitaka

Description

Running the F5 VE on boarding heat template in https://github.com/F5Networks/f5-openstack-heat/blob/develop/f5_supported/ve/images/patch_upload_ve_image.yaml fails with the following error. This was run on an OpenStack system installed with the Mitaka version.

Traceback (most recent call last):
  File "ve_image_sync.py", line 149, in <module>
    ve_image_sync.sync_image()
  File "ve_image_sync.py", line 117, in sync_image
    img_model = self._upload_image_to_glance(prepped_image)
  File "ve_image_sync.py", line 100, in _upload_image_to_glance
    gc = GlanceLib(self.os_creds).glance_client
  File "/home/imageprep/f5-openstack-image-prep/f5_image_prep/openstack/glance.py", line 25, in __init__
    self.glance_client = get_glance_client(creds)
  File "/home/imageprep/f5-openstack-image-prep/f5_image_prep/openstack/client.py", line 46, in get_glance_client
    keystone_client = get_keystone_client(creds)
  File "/home/imageprep/f5-openstack-image-prep/f5_image_prep/openstack/client.py", line 31, in get_keystone_client
    auth_url=creds.auth_url)
  File "/usr/lib/python2.7/dist-packages/keystoneclient/v2_0/client.py", line 144, in __init__
    self.authenticate()
  File "/usr/lib/python2.7/dist-packages/keystoneclient/utils.py", line 318, in inner
    return func(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/keystoneclient/httpclient.py", line 392, in authenticate
    resp = self.get_raw_token_from_identity_service(**kwargs)
  File "/usr/lib/python2.7/dist-packages/keystoneclient/v2_0/client.py", line 179, in get_raw_token_from_identity_service
    "%s" % e)
keystoneclient.apiclient.exceptions.AuthorizationFailure: Authorization Failed: Failed to parse: Failed to parse: http:

Debug Output

2016-06-03 20:16:20 (78.1 MB/s) - 'f5_ve_image.zip' saved [1133813050/1133813050]

+ unzip f5_ve_image.zip BIGIP-11.6.0.0.0.401.qcow2
Archive:  f5_ve_image.zip
  inflating: BIGIP-11.6.0.0.0.401.qcow2  
+ python ve_image_sync.py -i BIGIP-11.6.0.0.0.401.qcow2
sudo: unable to resolve host fu-st-patch-ve-image-image-prep-instance-kft6u53kjezh
+ '[' -n '' ']'
+ '[' -n '' ']'
+ check_oldfile_full_path
+ '[' -f BIGIP-11.6.0.0.0.401.qcow2 ']'
++ basename BIGIP-11.6.0.0.0.401.qcow2
+ ofname=BIGIP-11.6.0.0.0.401.qcow2
+ '[' -z os_ready-BIGIP-11.6.0.0.0.401.qcow2 ']'
+ cp BIGIP-11.6.0.0.0.401.qcow2 /home/imageprep/os_ready-BIGIP-11.6.0.0.0.401.qcow2
+ sleep 2
+ qemu-nbd -d /dev/nbd0
+ sleep 2
+ qemu-nbd --connect=/dev/nbd0 /home/imageprep/os_ready-BIGIP-11.6.0.0.0.401.qcow2
+ sleep 2
+ pvscan
+ sleep 2
+ echo 'The following command may cause '\''Can'\''t deactivate'\'' messages.'
+ echo 'These do not necessarily indicate a problem.'
+ vgchange -ay
+ sleep 2
+ mkdir -p /mnt/bigip-config
+ '[' -n '' ']'
+ echo 'Waiting 15 seconds'
+ sleep 15
+ umount /mnt/bigip-config
umount: /mnt/bigip-config: not mounted
+ '[' 1 -eq 1 ']'
+ umount /mnt/bigip-shared
umount: /mnt/bigip-shared: not found
+ '[' 1 -eq 1 ']'
++ get_dev set.1._config
++ ls -l /dev/vg-db-hda
++ grep set.1._config
++ cut '-d>' -f2
++ cut -d/ -f2-
+ mount /dev/dm-6 /mnt/bigip-config
+ inject_files
+ '[' -f /home/imageprep/f5-openstack-image-prep/lib/f5_image_prep/startup.tar ']'
+ tar -xf /home/imageprep/f5-openstack-image-prep/lib/f5_image_prep/startup.tar -C /mnt/bigip-config/
+ true
+ touch /mnt/bigip-config/firstboot
+ '[' -f none ']'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ sleep 2
+ umount /mnt/bigip-config
+ sleep 2
+ '[' -n '' ']'
+ sleep 2
+ vgchange -an
+ sleep 2
+ qemu-nbd -d /dev/nbd0
[  161.857848] block nbd0: Unexpected reply (ffff8800b9711c78)
+ echo 'Patched image located at /home/imageprep/os_ready-BIGIP-11.6.0.0.0.401.qcow2'
+ set +x


Patching image...




Uploading patched image to glance...


Traceback (most recent call last):
  File "ve_image_sync.py", line 149, in <module>
    ve_image_sync.sync_image()
  File "ve_image_sync.py", line 117, in sync_image
    img_model = self._upload_image_to_glance(prepped_image)
  File "ve_image_sync.py", line 100, in _upload_image_to_glance
    gc = GlanceLib(self.os_creds).glance_client
  File "/home/imageprep/f5-openstack-image-prep/f5_image_prep/openstack/glance.py", line 25, in __init__
    self.glance_client = get_glance_client(creds)
  File "/home/imageprep/f5-openstack-image-prep/f5_image_prep/openstack/client.py", line 46, in get_glance_client
    keystone_client = get_keystone_client(creds)
  File "/home/imageprep/f5-openstack-image-prep/f5_image_prep/openstack/client.py", line 31, in get_keystone_client
    auth_url=creds.auth_url)
  File "/usr/lib/python2.7/dist-packages/keystoneclient/v2_0/client.py", line 144, in __init__
    self.authenticate()
  File "/usr/lib/python2.7/dist-packages/keystoneclient/utils.py", line 318, in inner
    return func(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/keystoneclient/httpclient.py", line 392, in authenticate
    resp = self.get_raw_token_from_identity_service(**kwargs)
  File "/usr/lib/python2.7/dist-packages/keystoneclient/v2_0/client.py", line 179, in get_raw_token_from_identity_service
    "%s" % e)
keystoneclient.apiclient.exceptions.AuthorizationFailure: Authorization Failed: Failed to parse: Failed to parse: http:
2016-06-03 20:18:06,847 - util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [1]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.