Getting YouTube embedded in IOS 9 using Swift

These are just basic notes for me because I will forget.

This uses the Swift-YouTube-Player Cocoapod from

Copy the instructions here to get it installed using pods.

It isn’t up-to-date with swift 2.0 yet so copy the changes here

Then (using the information from here) make sure the VTPlayer.html file is included in the Pods (YouTubePlayer) resources list:

  • Click on Pods ‘project’
  • Click on YouTubePlayer under TARGETS
  • Click on Build Phases
  • Click on the plus sign (add build phase)
  • Add a Copy Files build phase
  • Set Destination to Resources and add the YTPlayer.html file

Rebuild all the things.

Workflow Tip 1: Manual Replaces

These workflow tips are for me to remember how I managed to make certain things more efficient.

This episode started from my local neutron failing to start due to:

2015-03-16 10:56:59.272 6232 CRITICAL neutron [-] ArgsAlreadyParsedError: arguments already parsed: cannot register CLI option

This was caused by this upstream change:

015-03-16 10:56:59.162 6232 TRACE neutron.service from neutron.openstack.common import log as logging

I had to change all the from neutron.openstack.common import log as logging lines to from oslo_log import log as logging. This isn’t a big deal and you’d think sed would work, but it can’t work due to the difficulties involved in reordering the imports into alphabetical order.


Using tmux I’d make a vertical split and make my edits in one of the panes. In the other pane I run:

watch -n 1 'find . -name "*.py" | xargs grep "neutron.openstack.common import log as logging"'

Having an updating list of what files I need to update is helpful and keeps me sane.

More Accessible Neutron Development

As a quark/neutron developer I have to stand up neutron servers all the time. The way that openstack prefers this be done is with devstack. This is really great and cool if you want to deal with the whole stack and watch how the services interact. If you just want to develop your plugin for Neutron this is quite a bit more than overkill.

The OpenStack community is, rightfully so, pot-committed with their auth solution keystone. This can be seen by clients having --help outputs like:

$ neutron --help
  --os-auth-strategy <auth-strategy>
  DEPRECATED! Only keystone is supported.

This means that if you wish to be a simple, no-nonsense neutron developer and make use of the clients you’ll need to stand up keystone. Despite having done such a thing multiple times I still think it’s a pain in the ass. It’s simply a fact of life that OpenStack is somewhat complicated, maybe needlessly so, and abandoning support for ease-of-use solutions like noauth is a big reason for that.

We forked the client awhile ago to add auth extensions, and because of that noauth is now supported in the client. Now developing for neutron is much more accessible for everyone.

It’s these little things that make open-source development — open.

If you’d like the OpenStack community to embrace the mentality of ease-of-entry, and more openness please show your support in getting these auth extensions upstream.

How to Use noauth

Using noauth is quite simple.

neutron --os-auth-strategy noauth --os-url <service endpoint> COMMAND

Some examples:

List networks
neutron --os-auth-strategy noauth --os-url http://localhost:9696/v2.0 net-list
Create a network
neutron --os-auth-strategy noauth --os-url http://localhost:9696/v2.0 net-create my_nets --tenant-id me

Because you’re doing noauth you’ll need to pass in the tenant-id. This isn’t a big deal though because you can make up whatever you want!

If more examples are necessary just comment.