diff --git a/doc/.autogenerated b/doc/.autogenerated new file mode 100644 index 000000000000..3a70f87808d1 --- /dev/null +++ b/doc/.autogenerated @@ -0,0 +1,97 @@ +source/api/nova..adminclient.rst +source/api/nova..api.cloud.rst +source/api/nova..api.ec2.admin.rst +source/api/nova..api.ec2.apirequest.rst +source/api/nova..api.ec2.cloud.rst +source/api/nova..api.ec2.images.rst +source/api/nova..api.ec2.metadatarequesthandler.rst +source/api/nova..api.openstack.auth.rst +source/api/nova..api.openstack.backup_schedules.rst +source/api/nova..api.openstack.faults.rst +source/api/nova..api.openstack.flavors.rst +source/api/nova..api.openstack.images.rst +source/api/nova..api.openstack.servers.rst +source/api/nova..api.openstack.sharedipgroups.rst +source/api/nova..auth.dbdriver.rst +source/api/nova..auth.fakeldap.rst +source/api/nova..auth.ldapdriver.rst +source/api/nova..auth.manager.rst +source/api/nova..auth.signer.rst +source/api/nova..cloudpipe.pipelib.rst +source/api/nova..compute.disk.rst +source/api/nova..compute.instance_types.rst +source/api/nova..compute.manager.rst +source/api/nova..compute.monitor.rst +source/api/nova..compute.power_state.rst +source/api/nova..context.rst +source/api/nova..crypto.rst +source/api/nova..db.api.rst +source/api/nova..db.sqlalchemy.api.rst +source/api/nova..db.sqlalchemy.models.rst +source/api/nova..db.sqlalchemy.session.rst +source/api/nova..exception.rst +source/api/nova..fakerabbit.rst +source/api/nova..flags.rst +source/api/nova..image.service.rst +source/api/nova..manager.rst +source/api/nova..network.linux_net.rst +source/api/nova..network.manager.rst +source/api/nova..objectstore.bucket.rst +source/api/nova..objectstore.handler.rst +source/api/nova..objectstore.image.rst +source/api/nova..objectstore.stored.rst +source/api/nova..process.rst +source/api/nova..quota.rst +source/api/nova..rpc.rst +source/api/nova..scheduler.chance.rst +source/api/nova..scheduler.driver.rst +source/api/nova..scheduler.manager.rst +source/api/nova..scheduler.simple.rst +source/api/nova..server.rst +source/api/nova..service.rst +source/api/nova..test.rst +source/api/nova..tests.access_unittest.rst +source/api/nova..tests.api.fakes.rst +source/api/nova..tests.api.openstack.fakes.rst +source/api/nova..tests.api.openstack.test_api.rst +source/api/nova..tests.api.openstack.test_auth.rst +source/api/nova..tests.api.openstack.test_faults.rst +source/api/nova..tests.api.openstack.test_flavors.rst +source/api/nova..tests.api.openstack.test_images.rst +source/api/nova..tests.api.openstack.test_ratelimiting.rst +source/api/nova..tests.api.openstack.test_servers.rst +source/api/nova..tests.api.openstack.test_sharedipgroups.rst +source/api/nova..tests.api.test_wsgi.rst +source/api/nova..tests.api_integration.rst +source/api/nova..tests.api_unittest.rst +source/api/nova..tests.auth_unittest.rst +source/api/nova..tests.cloud_unittest.rst +source/api/nova..tests.compute_unittest.rst +source/api/nova..tests.declare_flags.rst +source/api/nova..tests.fake_flags.rst +source/api/nova..tests.flags_unittest.rst +source/api/nova..tests.network_unittest.rst +source/api/nova..tests.objectstore_unittest.rst +source/api/nova..tests.process_unittest.rst +source/api/nova..tests.quota_unittest.rst +source/api/nova..tests.real_flags.rst +source/api/nova..tests.rpc_unittest.rst +source/api/nova..tests.runtime_flags.rst +source/api/nova..tests.scheduler_unittest.rst +source/api/nova..tests.service_unittest.rst +source/api/nova..tests.twistd_unittest.rst +source/api/nova..tests.validator_unittest.rst +source/api/nova..tests.virt_unittest.rst +source/api/nova..tests.volume_unittest.rst +source/api/nova..twistd.rst +source/api/nova..utils.rst +source/api/nova..validate.rst +source/api/nova..virt.connection.rst +source/api/nova..virt.fake.rst +source/api/nova..virt.images.rst +source/api/nova..virt.libvirt_conn.rst +source/api/nova..virt.xenapi.rst +source/api/nova..volume.driver.rst +source/api/nova..volume.manager.rst +source/api/nova..wsgi.rst +source/api/autoindex.rst diff --git a/doc/build/doctrees/adminguide/binaries.doctree b/doc/build/doctrees/adminguide/binaries.doctree new file mode 100644 index 000000000000..8006245a9f55 Binary files /dev/null and b/doc/build/doctrees/adminguide/binaries.doctree differ diff --git a/doc/build/doctrees/adminguide/distros/others.doctree b/doc/build/doctrees/adminguide/distros/others.doctree new file mode 100644 index 000000000000..c7f14fb918e2 Binary files /dev/null and b/doc/build/doctrees/adminguide/distros/others.doctree differ diff --git a/doc/build/doctrees/adminguide/distros/ubuntu.10.04.doctree b/doc/build/doctrees/adminguide/distros/ubuntu.10.04.doctree new file mode 100644 index 000000000000..135763bf719b Binary files /dev/null and b/doc/build/doctrees/adminguide/distros/ubuntu.10.04.doctree differ diff --git a/doc/build/doctrees/adminguide/distros/ubuntu.10.10.doctree b/doc/build/doctrees/adminguide/distros/ubuntu.10.10.doctree new file mode 100644 index 000000000000..2005aa78cd64 Binary files /dev/null and b/doc/build/doctrees/adminguide/distros/ubuntu.10.10.doctree differ diff --git a/doc/build/doctrees/adminguide/euca2ools.doctree b/doc/build/doctrees/adminguide/euca2ools.doctree new file mode 100644 index 000000000000..390845265b78 Binary files /dev/null and b/doc/build/doctrees/adminguide/euca2ools.doctree differ diff --git a/doc/build/doctrees/adminguide/flags.doctree b/doc/build/doctrees/adminguide/flags.doctree new file mode 100644 index 000000000000..0fd0522b8071 Binary files /dev/null and b/doc/build/doctrees/adminguide/flags.doctree differ diff --git a/doc/build/doctrees/adminguide/getting.started.doctree b/doc/build/doctrees/adminguide/getting.started.doctree new file mode 100644 index 000000000000..a4d1fce7acb4 Binary files /dev/null and b/doc/build/doctrees/adminguide/getting.started.doctree differ diff --git a/doc/build/doctrees/adminguide/index.doctree b/doc/build/doctrees/adminguide/index.doctree new file mode 100644 index 000000000000..43791ff9d2b4 Binary files /dev/null and b/doc/build/doctrees/adminguide/index.doctree differ diff --git a/doc/build/doctrees/adminguide/managing.images.doctree b/doc/build/doctrees/adminguide/managing.images.doctree new file mode 100644 index 000000000000..764bc8acef7a Binary files /dev/null and b/doc/build/doctrees/adminguide/managing.images.doctree differ diff --git a/doc/build/doctrees/adminguide/managing.instances.doctree b/doc/build/doctrees/adminguide/managing.instances.doctree new file mode 100644 index 000000000000..3bd9917de3f1 Binary files /dev/null and b/doc/build/doctrees/adminguide/managing.instances.doctree differ diff --git a/doc/build/doctrees/adminguide/managing.networks.doctree b/doc/build/doctrees/adminguide/managing.networks.doctree new file mode 100644 index 000000000000..e34f6ae28e52 Binary files /dev/null and b/doc/build/doctrees/adminguide/managing.networks.doctree differ diff --git a/doc/build/doctrees/adminguide/managing.projects.doctree b/doc/build/doctrees/adminguide/managing.projects.doctree new file mode 100644 index 000000000000..041c1dd61d9c Binary files /dev/null and b/doc/build/doctrees/adminguide/managing.projects.doctree differ diff --git a/doc/build/doctrees/adminguide/managing.users.doctree b/doc/build/doctrees/adminguide/managing.users.doctree new file mode 100644 index 000000000000..c21f05487979 Binary files /dev/null and b/doc/build/doctrees/adminguide/managing.users.doctree differ diff --git a/doc/build/doctrees/adminguide/managingsecurity.doctree b/doc/build/doctrees/adminguide/managingsecurity.doctree new file mode 100644 index 000000000000..8d5a3509792b Binary files /dev/null and b/doc/build/doctrees/adminguide/managingsecurity.doctree differ diff --git a/doc/build/doctrees/adminguide/monitoring.doctree b/doc/build/doctrees/adminguide/monitoring.doctree new file mode 100644 index 000000000000..c0c83f29af30 Binary files /dev/null and b/doc/build/doctrees/adminguide/monitoring.doctree differ diff --git a/doc/build/doctrees/adminguide/multi.node.install.doctree b/doc/build/doctrees/adminguide/multi.node.install.doctree new file mode 100644 index 000000000000..0b24939e654a Binary files /dev/null and b/doc/build/doctrees/adminguide/multi.node.install.doctree differ diff --git a/doc/build/doctrees/adminguide/network.flat.doctree b/doc/build/doctrees/adminguide/network.flat.doctree new file mode 100644 index 000000000000..99b60132efbb Binary files /dev/null and b/doc/build/doctrees/adminguide/network.flat.doctree differ diff --git a/doc/build/doctrees/adminguide/network.vlan.doctree b/doc/build/doctrees/adminguide/network.vlan.doctree new file mode 100644 index 000000000000..befc018f73a5 Binary files /dev/null and b/doc/build/doctrees/adminguide/network.vlan.doctree differ diff --git a/doc/build/doctrees/adminguide/nova.manage.doctree b/doc/build/doctrees/adminguide/nova.manage.doctree new file mode 100644 index 000000000000..74a389b7bf35 Binary files /dev/null and b/doc/build/doctrees/adminguide/nova.manage.doctree differ diff --git a/doc/build/doctrees/adminguide/single.node.install.doctree b/doc/build/doctrees/adminguide/single.node.install.doctree new file mode 100644 index 000000000000..a0a0c927102a Binary files /dev/null and b/doc/build/doctrees/adminguide/single.node.install.doctree differ diff --git a/doc/build/doctrees/api/autoindex.doctree b/doc/build/doctrees/api/autoindex.doctree new file mode 100644 index 000000000000..ca690eeab79c Binary files /dev/null and b/doc/build/doctrees/api/autoindex.doctree differ diff --git a/doc/build/doctrees/api/nova..adminclient.doctree b/doc/build/doctrees/api/nova..adminclient.doctree new file mode 100644 index 000000000000..054ddc0a99e0 Binary files /dev/null and b/doc/build/doctrees/api/nova..adminclient.doctree differ diff --git a/doc/build/doctrees/api/nova..api.cloud.doctree b/doc/build/doctrees/api/nova..api.cloud.doctree new file mode 100644 index 000000000000..36f2d4e1b4b4 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.cloud.doctree differ diff --git a/doc/build/doctrees/api/nova..api.ec2.admin.doctree b/doc/build/doctrees/api/nova..api.ec2.admin.doctree new file mode 100644 index 000000000000..e990f2153111 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.ec2.admin.doctree differ diff --git a/doc/build/doctrees/api/nova..api.ec2.apirequest.doctree b/doc/build/doctrees/api/nova..api.ec2.apirequest.doctree new file mode 100644 index 000000000000..fe48891250f6 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.ec2.apirequest.doctree differ diff --git a/doc/build/doctrees/api/nova..api.ec2.cloud.doctree b/doc/build/doctrees/api/nova..api.ec2.cloud.doctree new file mode 100644 index 000000000000..d9bf795d65b6 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.ec2.cloud.doctree differ diff --git a/doc/build/doctrees/api/nova..api.ec2.images.doctree b/doc/build/doctrees/api/nova..api.ec2.images.doctree new file mode 100644 index 000000000000..f9fb8410e6d0 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.ec2.images.doctree differ diff --git a/doc/build/doctrees/api/nova..api.ec2.metadatarequesthandler.doctree b/doc/build/doctrees/api/nova..api.ec2.metadatarequesthandler.doctree new file mode 100644 index 000000000000..fb91634a9b70 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.ec2.metadatarequesthandler.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.auth.doctree b/doc/build/doctrees/api/nova..api.openstack.auth.doctree new file mode 100644 index 000000000000..f141f42e92f6 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.auth.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.backup_schedules.doctree b/doc/build/doctrees/api/nova..api.openstack.backup_schedules.doctree new file mode 100644 index 000000000000..782143b747b4 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.backup_schedules.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.faults.doctree b/doc/build/doctrees/api/nova..api.openstack.faults.doctree new file mode 100644 index 000000000000..ef8a3e1f7b8e Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.faults.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.flavors.doctree b/doc/build/doctrees/api/nova..api.openstack.flavors.doctree new file mode 100644 index 000000000000..cda06eea5cd0 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.flavors.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.images.doctree b/doc/build/doctrees/api/nova..api.openstack.images.doctree new file mode 100644 index 000000000000..89ad9c9ec3ab Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.images.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.servers.doctree b/doc/build/doctrees/api/nova..api.openstack.servers.doctree new file mode 100644 index 000000000000..a43145bab32f Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.servers.doctree differ diff --git a/doc/build/doctrees/api/nova..api.openstack.sharedipgroups.doctree b/doc/build/doctrees/api/nova..api.openstack.sharedipgroups.doctree new file mode 100644 index 000000000000..22076591f8b2 Binary files /dev/null and b/doc/build/doctrees/api/nova..api.openstack.sharedipgroups.doctree differ diff --git a/doc/build/doctrees/api/nova..auth.dbdriver.doctree b/doc/build/doctrees/api/nova..auth.dbdriver.doctree new file mode 100644 index 000000000000..ba8863ec3eb5 Binary files /dev/null and b/doc/build/doctrees/api/nova..auth.dbdriver.doctree differ diff --git a/doc/build/doctrees/api/nova..auth.fakeldap.doctree b/doc/build/doctrees/api/nova..auth.fakeldap.doctree new file mode 100644 index 000000000000..c63566ba7f26 Binary files /dev/null and b/doc/build/doctrees/api/nova..auth.fakeldap.doctree differ diff --git a/doc/build/doctrees/api/nova..auth.ldapdriver.doctree b/doc/build/doctrees/api/nova..auth.ldapdriver.doctree new file mode 100644 index 000000000000..e1df8e5af513 Binary files /dev/null and b/doc/build/doctrees/api/nova..auth.ldapdriver.doctree differ diff --git a/doc/build/doctrees/api/nova..auth.manager.doctree b/doc/build/doctrees/api/nova..auth.manager.doctree new file mode 100644 index 000000000000..a808e5469619 Binary files /dev/null and b/doc/build/doctrees/api/nova..auth.manager.doctree differ diff --git a/doc/build/doctrees/api/nova..auth.signer.doctree b/doc/build/doctrees/api/nova..auth.signer.doctree new file mode 100644 index 000000000000..be8b802a6700 Binary files /dev/null and b/doc/build/doctrees/api/nova..auth.signer.doctree differ diff --git a/doc/build/doctrees/api/nova..cloudpipe.pipelib.doctree b/doc/build/doctrees/api/nova..cloudpipe.pipelib.doctree new file mode 100644 index 000000000000..24c2e94af856 Binary files /dev/null and b/doc/build/doctrees/api/nova..cloudpipe.pipelib.doctree differ diff --git a/doc/build/doctrees/api/nova..compute.disk.doctree b/doc/build/doctrees/api/nova..compute.disk.doctree new file mode 100644 index 000000000000..b4d2e418d51d Binary files /dev/null and b/doc/build/doctrees/api/nova..compute.disk.doctree differ diff --git a/doc/build/doctrees/api/nova..compute.instance_types.doctree b/doc/build/doctrees/api/nova..compute.instance_types.doctree new file mode 100644 index 000000000000..1f77e18de2d9 Binary files /dev/null and b/doc/build/doctrees/api/nova..compute.instance_types.doctree differ diff --git a/doc/build/doctrees/api/nova..compute.manager.doctree b/doc/build/doctrees/api/nova..compute.manager.doctree new file mode 100644 index 000000000000..5eb311aad207 Binary files /dev/null and b/doc/build/doctrees/api/nova..compute.manager.doctree differ diff --git a/doc/build/doctrees/api/nova..compute.monitor.doctree b/doc/build/doctrees/api/nova..compute.monitor.doctree new file mode 100644 index 000000000000..656324737b15 Binary files /dev/null and b/doc/build/doctrees/api/nova..compute.monitor.doctree differ diff --git a/doc/build/doctrees/api/nova..compute.power_state.doctree b/doc/build/doctrees/api/nova..compute.power_state.doctree new file mode 100644 index 000000000000..5ac9e5ac3638 Binary files /dev/null and b/doc/build/doctrees/api/nova..compute.power_state.doctree differ diff --git a/doc/build/doctrees/api/nova..context.doctree b/doc/build/doctrees/api/nova..context.doctree new file mode 100644 index 000000000000..e0f618ae6b44 Binary files /dev/null and b/doc/build/doctrees/api/nova..context.doctree differ diff --git a/doc/build/doctrees/api/nova..crypto.doctree b/doc/build/doctrees/api/nova..crypto.doctree new file mode 100644 index 000000000000..9062aa13e0bb Binary files /dev/null and b/doc/build/doctrees/api/nova..crypto.doctree differ diff --git a/doc/build/doctrees/api/nova..db.api.doctree b/doc/build/doctrees/api/nova..db.api.doctree new file mode 100644 index 000000000000..381e7a7eb746 Binary files /dev/null and b/doc/build/doctrees/api/nova..db.api.doctree differ diff --git a/doc/build/doctrees/api/nova..db.sqlalchemy.api.doctree b/doc/build/doctrees/api/nova..db.sqlalchemy.api.doctree new file mode 100644 index 000000000000..9d60f965968b Binary files /dev/null and b/doc/build/doctrees/api/nova..db.sqlalchemy.api.doctree differ diff --git a/doc/build/doctrees/api/nova..db.sqlalchemy.models.doctree b/doc/build/doctrees/api/nova..db.sqlalchemy.models.doctree new file mode 100644 index 000000000000..b4545c6cf8fa Binary files /dev/null and b/doc/build/doctrees/api/nova..db.sqlalchemy.models.doctree differ diff --git a/doc/build/doctrees/api/nova..db.sqlalchemy.session.doctree b/doc/build/doctrees/api/nova..db.sqlalchemy.session.doctree new file mode 100644 index 000000000000..8c169f08aaff Binary files /dev/null and b/doc/build/doctrees/api/nova..db.sqlalchemy.session.doctree differ diff --git a/doc/build/doctrees/api/nova..exception.doctree b/doc/build/doctrees/api/nova..exception.doctree new file mode 100644 index 000000000000..43c08f7ce1aa Binary files /dev/null and b/doc/build/doctrees/api/nova..exception.doctree differ diff --git a/doc/build/doctrees/api/nova..fakerabbit.doctree b/doc/build/doctrees/api/nova..fakerabbit.doctree new file mode 100644 index 000000000000..bffd1c648321 Binary files /dev/null and b/doc/build/doctrees/api/nova..fakerabbit.doctree differ diff --git a/doc/build/doctrees/api/nova..flags.doctree b/doc/build/doctrees/api/nova..flags.doctree new file mode 100644 index 000000000000..d3e58d1bc638 Binary files /dev/null and b/doc/build/doctrees/api/nova..flags.doctree differ diff --git a/doc/build/doctrees/api/nova..image.service.doctree b/doc/build/doctrees/api/nova..image.service.doctree new file mode 100644 index 000000000000..d4b4db40cb74 Binary files /dev/null and b/doc/build/doctrees/api/nova..image.service.doctree differ diff --git a/doc/build/doctrees/api/nova..manager.doctree b/doc/build/doctrees/api/nova..manager.doctree new file mode 100644 index 000000000000..cba863ab7d20 Binary files /dev/null and b/doc/build/doctrees/api/nova..manager.doctree differ diff --git a/doc/build/doctrees/api/nova..network.linux_net.doctree b/doc/build/doctrees/api/nova..network.linux_net.doctree new file mode 100644 index 000000000000..9fa9ea8bdb94 Binary files /dev/null and b/doc/build/doctrees/api/nova..network.linux_net.doctree differ diff --git a/doc/build/doctrees/api/nova..network.manager.doctree b/doc/build/doctrees/api/nova..network.manager.doctree new file mode 100644 index 000000000000..6fc68e0ba974 Binary files /dev/null and b/doc/build/doctrees/api/nova..network.manager.doctree differ diff --git a/doc/build/doctrees/api/nova..objectstore.bucket.doctree b/doc/build/doctrees/api/nova..objectstore.bucket.doctree new file mode 100644 index 000000000000..9f88b7006a54 Binary files /dev/null and b/doc/build/doctrees/api/nova..objectstore.bucket.doctree differ diff --git a/doc/build/doctrees/api/nova..objectstore.handler.doctree b/doc/build/doctrees/api/nova..objectstore.handler.doctree new file mode 100644 index 000000000000..46a6d7638ca4 Binary files /dev/null and b/doc/build/doctrees/api/nova..objectstore.handler.doctree differ diff --git a/doc/build/doctrees/api/nova..objectstore.image.doctree b/doc/build/doctrees/api/nova..objectstore.image.doctree new file mode 100644 index 000000000000..f37c9025bcba Binary files /dev/null and b/doc/build/doctrees/api/nova..objectstore.image.doctree differ diff --git a/doc/build/doctrees/api/nova..objectstore.stored.doctree b/doc/build/doctrees/api/nova..objectstore.stored.doctree new file mode 100644 index 000000000000..b776a1fdb78e Binary files /dev/null and b/doc/build/doctrees/api/nova..objectstore.stored.doctree differ diff --git a/doc/build/doctrees/api/nova..process.doctree b/doc/build/doctrees/api/nova..process.doctree new file mode 100644 index 000000000000..9c0ba4e2f6ea Binary files /dev/null and b/doc/build/doctrees/api/nova..process.doctree differ diff --git a/doc/build/doctrees/api/nova..quota.doctree b/doc/build/doctrees/api/nova..quota.doctree new file mode 100644 index 000000000000..9331bc054d4d Binary files /dev/null and b/doc/build/doctrees/api/nova..quota.doctree differ diff --git a/doc/build/doctrees/api/nova..rpc.doctree b/doc/build/doctrees/api/nova..rpc.doctree new file mode 100644 index 000000000000..e20293b36e28 Binary files /dev/null and b/doc/build/doctrees/api/nova..rpc.doctree differ diff --git a/doc/build/doctrees/api/nova..scheduler.chance.doctree b/doc/build/doctrees/api/nova..scheduler.chance.doctree new file mode 100644 index 000000000000..543464d3bf4c Binary files /dev/null and b/doc/build/doctrees/api/nova..scheduler.chance.doctree differ diff --git a/doc/build/doctrees/api/nova..scheduler.driver.doctree b/doc/build/doctrees/api/nova..scheduler.driver.doctree new file mode 100644 index 000000000000..26141ae79fe9 Binary files /dev/null and b/doc/build/doctrees/api/nova..scheduler.driver.doctree differ diff --git a/doc/build/doctrees/api/nova..scheduler.manager.doctree b/doc/build/doctrees/api/nova..scheduler.manager.doctree new file mode 100644 index 000000000000..02f3b6ce3db9 Binary files /dev/null and b/doc/build/doctrees/api/nova..scheduler.manager.doctree differ diff --git a/doc/build/doctrees/api/nova..scheduler.simple.doctree b/doc/build/doctrees/api/nova..scheduler.simple.doctree new file mode 100644 index 000000000000..207eb267146f Binary files /dev/null and b/doc/build/doctrees/api/nova..scheduler.simple.doctree differ diff --git a/doc/build/doctrees/api/nova..server.doctree b/doc/build/doctrees/api/nova..server.doctree new file mode 100644 index 000000000000..d4df9a18c42a Binary files /dev/null and b/doc/build/doctrees/api/nova..server.doctree differ diff --git a/doc/build/doctrees/api/nova..service.doctree b/doc/build/doctrees/api/nova..service.doctree new file mode 100644 index 000000000000..ab06c6158f91 Binary files /dev/null and b/doc/build/doctrees/api/nova..service.doctree differ diff --git a/doc/build/doctrees/api/nova..test.doctree b/doc/build/doctrees/api/nova..test.doctree new file mode 100644 index 000000000000..d7a84581e61e Binary files /dev/null and b/doc/build/doctrees/api/nova..test.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.access_unittest.doctree b/doc/build/doctrees/api/nova..tests.access_unittest.doctree new file mode 100644 index 000000000000..7464afd08ffa Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.access_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.fakes.doctree b/doc/build/doctrees/api/nova..tests.api.fakes.doctree new file mode 100644 index 000000000000..12fbe3aa9a1f Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.fakes.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.fakes.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.fakes.doctree new file mode 100644 index 000000000000..32ff53359ff2 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.fakes.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_api.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_api.doctree new file mode 100644 index 000000000000..f948ddf25931 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_api.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_auth.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_auth.doctree new file mode 100644 index 000000000000..7e826d0f0bb5 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_auth.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_faults.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_faults.doctree new file mode 100644 index 000000000000..c34d2a36b32e Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_faults.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_flavors.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_flavors.doctree new file mode 100644 index 000000000000..979430fa035b Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_flavors.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_images.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_images.doctree new file mode 100644 index 000000000000..f9b50d078327 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_images.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_ratelimiting.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_ratelimiting.doctree new file mode 100644 index 000000000000..8cf2a10d8887 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_ratelimiting.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_servers.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_servers.doctree new file mode 100644 index 000000000000..2d7148e04a5b Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_servers.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.openstack.test_sharedipgroups.doctree b/doc/build/doctrees/api/nova..tests.api.openstack.test_sharedipgroups.doctree new file mode 100644 index 000000000000..f15f42510d2f Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.openstack.test_sharedipgroups.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api.test_wsgi.doctree b/doc/build/doctrees/api/nova..tests.api.test_wsgi.doctree new file mode 100644 index 000000000000..b338e30b47bb Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api.test_wsgi.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api_integration.doctree b/doc/build/doctrees/api/nova..tests.api_integration.doctree new file mode 100644 index 000000000000..40f3bce82955 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api_integration.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.api_unittest.doctree b/doc/build/doctrees/api/nova..tests.api_unittest.doctree new file mode 100644 index 000000000000..ec226452cfc3 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.api_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.auth_unittest.doctree b/doc/build/doctrees/api/nova..tests.auth_unittest.doctree new file mode 100644 index 000000000000..9a41203794a2 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.auth_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.cloud_unittest.doctree b/doc/build/doctrees/api/nova..tests.cloud_unittest.doctree new file mode 100644 index 000000000000..4fd382e6d42d Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.cloud_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.compute_unittest.doctree b/doc/build/doctrees/api/nova..tests.compute_unittest.doctree new file mode 100644 index 000000000000..8704fe728679 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.compute_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.declare_flags.doctree b/doc/build/doctrees/api/nova..tests.declare_flags.doctree new file mode 100644 index 000000000000..161b5242c600 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.declare_flags.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.fake_flags.doctree b/doc/build/doctrees/api/nova..tests.fake_flags.doctree new file mode 100644 index 000000000000..183fc8d46a07 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.fake_flags.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.flags_unittest.doctree b/doc/build/doctrees/api/nova..tests.flags_unittest.doctree new file mode 100644 index 000000000000..53f669795df0 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.flags_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.network_unittest.doctree b/doc/build/doctrees/api/nova..tests.network_unittest.doctree new file mode 100644 index 000000000000..56436d8ed746 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.network_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.objectstore_unittest.doctree b/doc/build/doctrees/api/nova..tests.objectstore_unittest.doctree new file mode 100644 index 000000000000..a560cb8c5cab Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.objectstore_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.process_unittest.doctree b/doc/build/doctrees/api/nova..tests.process_unittest.doctree new file mode 100644 index 000000000000..f393416e6f24 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.process_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.quota_unittest.doctree b/doc/build/doctrees/api/nova..tests.quota_unittest.doctree new file mode 100644 index 000000000000..e001cbe8dfdd Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.quota_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.real_flags.doctree b/doc/build/doctrees/api/nova..tests.real_flags.doctree new file mode 100644 index 000000000000..e5c331eb49a9 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.real_flags.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.rpc_unittest.doctree b/doc/build/doctrees/api/nova..tests.rpc_unittest.doctree new file mode 100644 index 000000000000..40c37e09708e Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.rpc_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.runtime_flags.doctree b/doc/build/doctrees/api/nova..tests.runtime_flags.doctree new file mode 100644 index 000000000000..1602d1b71932 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.runtime_flags.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.scheduler_unittest.doctree b/doc/build/doctrees/api/nova..tests.scheduler_unittest.doctree new file mode 100644 index 000000000000..2ff5f8320de2 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.scheduler_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.service_unittest.doctree b/doc/build/doctrees/api/nova..tests.service_unittest.doctree new file mode 100644 index 000000000000..4522500be018 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.service_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.twistd_unittest.doctree b/doc/build/doctrees/api/nova..tests.twistd_unittest.doctree new file mode 100644 index 000000000000..794c02f17b08 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.twistd_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.validator_unittest.doctree b/doc/build/doctrees/api/nova..tests.validator_unittest.doctree new file mode 100644 index 000000000000..e1f52b00f287 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.validator_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.virt_unittest.doctree b/doc/build/doctrees/api/nova..tests.virt_unittest.doctree new file mode 100644 index 000000000000..5c27b5c28dd2 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.virt_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..tests.volume_unittest.doctree b/doc/build/doctrees/api/nova..tests.volume_unittest.doctree new file mode 100644 index 000000000000..807bbaac24d4 Binary files /dev/null and b/doc/build/doctrees/api/nova..tests.volume_unittest.doctree differ diff --git a/doc/build/doctrees/api/nova..twistd.doctree b/doc/build/doctrees/api/nova..twistd.doctree new file mode 100644 index 000000000000..41a9335ee02e Binary files /dev/null and b/doc/build/doctrees/api/nova..twistd.doctree differ diff --git a/doc/build/doctrees/api/nova..utils.doctree b/doc/build/doctrees/api/nova..utils.doctree new file mode 100644 index 000000000000..e801085f2e7d Binary files /dev/null and b/doc/build/doctrees/api/nova..utils.doctree differ diff --git a/doc/build/doctrees/api/nova..validate.doctree b/doc/build/doctrees/api/nova..validate.doctree new file mode 100644 index 000000000000..2f3cd446137c Binary files /dev/null and b/doc/build/doctrees/api/nova..validate.doctree differ diff --git a/doc/build/doctrees/api/nova..virt.connection.doctree b/doc/build/doctrees/api/nova..virt.connection.doctree new file mode 100644 index 000000000000..77789df65fef Binary files /dev/null and b/doc/build/doctrees/api/nova..virt.connection.doctree differ diff --git a/doc/build/doctrees/api/nova..virt.fake.doctree b/doc/build/doctrees/api/nova..virt.fake.doctree new file mode 100644 index 000000000000..9b8ebe42f94c Binary files /dev/null and b/doc/build/doctrees/api/nova..virt.fake.doctree differ diff --git a/doc/build/doctrees/api/nova..virt.images.doctree b/doc/build/doctrees/api/nova..virt.images.doctree new file mode 100644 index 000000000000..abfb4850a58a Binary files /dev/null and b/doc/build/doctrees/api/nova..virt.images.doctree differ diff --git a/doc/build/doctrees/api/nova..virt.libvirt_conn.doctree b/doc/build/doctrees/api/nova..virt.libvirt_conn.doctree new file mode 100644 index 000000000000..d305479a4ee3 Binary files /dev/null and b/doc/build/doctrees/api/nova..virt.libvirt_conn.doctree differ diff --git a/doc/build/doctrees/api/nova..virt.xenapi.doctree b/doc/build/doctrees/api/nova..virt.xenapi.doctree new file mode 100644 index 000000000000..0a4e21b8a1f4 Binary files /dev/null and b/doc/build/doctrees/api/nova..virt.xenapi.doctree differ diff --git a/doc/build/doctrees/api/nova..volume.driver.doctree b/doc/build/doctrees/api/nova..volume.driver.doctree new file mode 100644 index 000000000000..a62cc606e7d6 Binary files /dev/null and b/doc/build/doctrees/api/nova..volume.driver.doctree differ diff --git a/doc/build/doctrees/api/nova..volume.manager.doctree b/doc/build/doctrees/api/nova..volume.manager.doctree new file mode 100644 index 000000000000..0c8b454a1926 Binary files /dev/null and b/doc/build/doctrees/api/nova..volume.manager.doctree differ diff --git a/doc/build/doctrees/api/nova..wsgi.doctree b/doc/build/doctrees/api/nova..wsgi.doctree new file mode 100644 index 000000000000..d177a5a8e054 Binary files /dev/null and b/doc/build/doctrees/api/nova..wsgi.doctree differ diff --git a/doc/build/doctrees/cloud101.doctree b/doc/build/doctrees/cloud101.doctree new file mode 100644 index 000000000000..e7667f866d21 Binary files /dev/null and b/doc/build/doctrees/cloud101.doctree differ diff --git a/doc/build/doctrees/code.doctree b/doc/build/doctrees/code.doctree new file mode 100644 index 000000000000..ce5ad4485761 Binary files /dev/null and b/doc/build/doctrees/code.doctree differ diff --git a/doc/build/doctrees/community.doctree b/doc/build/doctrees/community.doctree new file mode 100644 index 000000000000..6837addb6a0e Binary files /dev/null and b/doc/build/doctrees/community.doctree differ diff --git a/doc/build/doctrees/devref/api.doctree b/doc/build/doctrees/devref/api.doctree new file mode 100644 index 000000000000..a999307c0c51 Binary files /dev/null and b/doc/build/doctrees/devref/api.doctree differ diff --git a/doc/build/doctrees/devref/architecture.doctree b/doc/build/doctrees/devref/architecture.doctree new file mode 100644 index 000000000000..b5de0bc694f0 Binary files /dev/null and b/doc/build/doctrees/devref/architecture.doctree differ diff --git a/doc/build/doctrees/devref/auth.doctree b/doc/build/doctrees/devref/auth.doctree new file mode 100644 index 000000000000..c81eba43b415 Binary files /dev/null and b/doc/build/doctrees/devref/auth.doctree differ diff --git a/doc/build/doctrees/devref/cloudpipe.doctree b/doc/build/doctrees/devref/cloudpipe.doctree new file mode 100644 index 000000000000..6c43a0feb060 Binary files /dev/null and b/doc/build/doctrees/devref/cloudpipe.doctree differ diff --git a/doc/build/doctrees/devref/compute.doctree b/doc/build/doctrees/devref/compute.doctree new file mode 100644 index 000000000000..bb56b1c9ae27 Binary files /dev/null and b/doc/build/doctrees/devref/compute.doctree differ diff --git a/doc/build/doctrees/devref/database.doctree b/doc/build/doctrees/devref/database.doctree new file mode 100644 index 000000000000..189239f0f618 Binary files /dev/null and b/doc/build/doctrees/devref/database.doctree differ diff --git a/doc/build/doctrees/devref/development.environment.doctree b/doc/build/doctrees/devref/development.environment.doctree new file mode 100644 index 000000000000..4862bd192e09 Binary files /dev/null and b/doc/build/doctrees/devref/development.environment.doctree differ diff --git a/doc/build/doctrees/devref/fakes.doctree b/doc/build/doctrees/devref/fakes.doctree new file mode 100644 index 000000000000..fe68337e85a0 Binary files /dev/null and b/doc/build/doctrees/devref/fakes.doctree differ diff --git a/doc/build/doctrees/devref/glance.doctree b/doc/build/doctrees/devref/glance.doctree new file mode 100644 index 000000000000..01eec6987bb6 Binary files /dev/null and b/doc/build/doctrees/devref/glance.doctree differ diff --git a/doc/build/doctrees/devref/index.doctree b/doc/build/doctrees/devref/index.doctree new file mode 100644 index 000000000000..8c155355e687 Binary files /dev/null and b/doc/build/doctrees/devref/index.doctree differ diff --git a/doc/build/doctrees/devref/modules.doctree b/doc/build/doctrees/devref/modules.doctree new file mode 100644 index 000000000000..e6dcde834b0a Binary files /dev/null and b/doc/build/doctrees/devref/modules.doctree differ diff --git a/doc/build/doctrees/devref/network.doctree b/doc/build/doctrees/devref/network.doctree new file mode 100644 index 000000000000..da867cb86371 Binary files /dev/null and b/doc/build/doctrees/devref/network.doctree differ diff --git a/doc/build/doctrees/devref/nova.doctree b/doc/build/doctrees/devref/nova.doctree new file mode 100644 index 000000000000..f823fa17086e Binary files /dev/null and b/doc/build/doctrees/devref/nova.doctree differ diff --git a/doc/build/doctrees/devref/objectstore.doctree b/doc/build/doctrees/devref/objectstore.doctree new file mode 100644 index 000000000000..45ab43f49bee Binary files /dev/null and b/doc/build/doctrees/devref/objectstore.doctree differ diff --git a/doc/build/doctrees/devref/scheduler.doctree b/doc/build/doctrees/devref/scheduler.doctree new file mode 100644 index 000000000000..69a7337bdb97 Binary files /dev/null and b/doc/build/doctrees/devref/scheduler.doctree differ diff --git a/doc/build/doctrees/devref/services.doctree b/doc/build/doctrees/devref/services.doctree new file mode 100644 index 000000000000..4c3c9c52fad6 Binary files /dev/null and b/doc/build/doctrees/devref/services.doctree differ diff --git a/doc/build/doctrees/devref/volume.doctree b/doc/build/doctrees/devref/volume.doctree new file mode 100644 index 000000000000..a565a959230b Binary files /dev/null and b/doc/build/doctrees/devref/volume.doctree differ diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle new file mode 100644 index 000000000000..0936198cbe17 Binary files /dev/null and b/doc/build/doctrees/environment.pickle differ diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree new file mode 100644 index 000000000000..0ce64eaea4ba Binary files /dev/null and b/doc/build/doctrees/index.doctree differ diff --git a/doc/build/doctrees/installer.doctree b/doc/build/doctrees/installer.doctree new file mode 100644 index 000000000000..b193cbe32d58 Binary files /dev/null and b/doc/build/doctrees/installer.doctree differ diff --git a/doc/build/doctrees/livecd.doctree b/doc/build/doctrees/livecd.doctree new file mode 100644 index 000000000000..7e9ae7f3eac6 Binary files /dev/null and b/doc/build/doctrees/livecd.doctree differ diff --git a/doc/build/doctrees/man/novamanage.doctree b/doc/build/doctrees/man/novamanage.doctree new file mode 100644 index 000000000000..78a658e480e5 Binary files /dev/null and b/doc/build/doctrees/man/novamanage.doctree differ diff --git a/doc/build/doctrees/nova.concepts.doctree b/doc/build/doctrees/nova.concepts.doctree new file mode 100644 index 000000000000..71fcc46bf16f Binary files /dev/null and b/doc/build/doctrees/nova.concepts.doctree differ diff --git a/doc/build/doctrees/object.model.doctree b/doc/build/doctrees/object.model.doctree new file mode 100644 index 000000000000..16500b8e9c53 Binary files /dev/null and b/doc/build/doctrees/object.model.doctree differ diff --git a/doc/build/doctrees/quickstart.doctree b/doc/build/doctrees/quickstart.doctree new file mode 100644 index 000000000000..fad66f8ddd5f Binary files /dev/null and b/doc/build/doctrees/quickstart.doctree differ diff --git a/doc/build/doctrees/service.architecture.doctree b/doc/build/doctrees/service.architecture.doctree new file mode 100644 index 000000000000..4fc09dd05ace Binary files /dev/null and b/doc/build/doctrees/service.architecture.doctree differ diff --git a/doc/build/html/.buildinfo b/doc/build/html/.buildinfo new file mode 100644 index 000000000000..0885fbe1fb78 --- /dev/null +++ b/doc/build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: +tags: diff --git a/doc/build/html/.doctrees/adminguide/binaries.doctree b/doc/build/html/.doctrees/adminguide/binaries.doctree new file mode 100644 index 000000000000..8006245a9f55 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/binaries.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/distros/others.doctree b/doc/build/html/.doctrees/adminguide/distros/others.doctree new file mode 100644 index 000000000000..c7f14fb918e2 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/distros/others.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/distros/ubuntu.10.04.doctree b/doc/build/html/.doctrees/adminguide/distros/ubuntu.10.04.doctree new file mode 100644 index 000000000000..135763bf719b Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/distros/ubuntu.10.04.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/distros/ubuntu.10.10.doctree b/doc/build/html/.doctrees/adminguide/distros/ubuntu.10.10.doctree new file mode 100644 index 000000000000..2005aa78cd64 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/distros/ubuntu.10.10.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/euca2ools.doctree b/doc/build/html/.doctrees/adminguide/euca2ools.doctree new file mode 100644 index 000000000000..390845265b78 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/euca2ools.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/flags.doctree b/doc/build/html/.doctrees/adminguide/flags.doctree new file mode 100644 index 000000000000..0fd0522b8071 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/flags.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/getting.started.doctree b/doc/build/html/.doctrees/adminguide/getting.started.doctree new file mode 100644 index 000000000000..a4d1fce7acb4 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/getting.started.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/index.doctree b/doc/build/html/.doctrees/adminguide/index.doctree new file mode 100644 index 000000000000..43791ff9d2b4 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/index.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/managing.images.doctree b/doc/build/html/.doctrees/adminguide/managing.images.doctree new file mode 100644 index 000000000000..764bc8acef7a Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/managing.images.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/managing.instances.doctree b/doc/build/html/.doctrees/adminguide/managing.instances.doctree new file mode 100644 index 000000000000..3bd9917de3f1 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/managing.instances.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/managing.networks.doctree b/doc/build/html/.doctrees/adminguide/managing.networks.doctree new file mode 100644 index 000000000000..e34f6ae28e52 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/managing.networks.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/managing.projects.doctree b/doc/build/html/.doctrees/adminguide/managing.projects.doctree new file mode 100644 index 000000000000..041c1dd61d9c Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/managing.projects.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/managing.users.doctree b/doc/build/html/.doctrees/adminguide/managing.users.doctree new file mode 100644 index 000000000000..c21f05487979 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/managing.users.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/managingsecurity.doctree b/doc/build/html/.doctrees/adminguide/managingsecurity.doctree new file mode 100644 index 000000000000..8d5a3509792b Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/managingsecurity.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/monitoring.doctree b/doc/build/html/.doctrees/adminguide/monitoring.doctree new file mode 100644 index 000000000000..c0c83f29af30 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/monitoring.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/multi.node.install.doctree b/doc/build/html/.doctrees/adminguide/multi.node.install.doctree new file mode 100644 index 000000000000..0b24939e654a Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/multi.node.install.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/network.flat.doctree b/doc/build/html/.doctrees/adminguide/network.flat.doctree new file mode 100644 index 000000000000..99b60132efbb Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/network.flat.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/network.vlan.doctree b/doc/build/html/.doctrees/adminguide/network.vlan.doctree new file mode 100644 index 000000000000..befc018f73a5 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/network.vlan.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/nova.manage.doctree b/doc/build/html/.doctrees/adminguide/nova.manage.doctree new file mode 100644 index 000000000000..74a389b7bf35 Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/nova.manage.doctree differ diff --git a/doc/build/html/.doctrees/adminguide/single.node.install.doctree b/doc/build/html/.doctrees/adminguide/single.node.install.doctree new file mode 100644 index 000000000000..a0a0c927102a Binary files /dev/null and b/doc/build/html/.doctrees/adminguide/single.node.install.doctree differ diff --git a/doc/build/html/.doctrees/api/autoindex.doctree b/doc/build/html/.doctrees/api/autoindex.doctree new file mode 100644 index 000000000000..ca690eeab79c Binary files /dev/null and b/doc/build/html/.doctrees/api/autoindex.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..adminclient.doctree b/doc/build/html/.doctrees/api/nova..adminclient.doctree new file mode 100644 index 000000000000..054ddc0a99e0 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..adminclient.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.cloud.doctree b/doc/build/html/.doctrees/api/nova..api.cloud.doctree new file mode 100644 index 000000000000..36f2d4e1b4b4 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.cloud.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.ec2.admin.doctree b/doc/build/html/.doctrees/api/nova..api.ec2.admin.doctree new file mode 100644 index 000000000000..e990f2153111 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.ec2.admin.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.ec2.apirequest.doctree b/doc/build/html/.doctrees/api/nova..api.ec2.apirequest.doctree new file mode 100644 index 000000000000..fe48891250f6 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.ec2.apirequest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.ec2.cloud.doctree b/doc/build/html/.doctrees/api/nova..api.ec2.cloud.doctree new file mode 100644 index 000000000000..d9bf795d65b6 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.ec2.cloud.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.ec2.images.doctree b/doc/build/html/.doctrees/api/nova..api.ec2.images.doctree new file mode 100644 index 000000000000..f9fb8410e6d0 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.ec2.images.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.ec2.metadatarequesthandler.doctree b/doc/build/html/.doctrees/api/nova..api.ec2.metadatarequesthandler.doctree new file mode 100644 index 000000000000..fb91634a9b70 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.ec2.metadatarequesthandler.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.auth.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.auth.doctree new file mode 100644 index 000000000000..f141f42e92f6 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.auth.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.backup_schedules.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.backup_schedules.doctree new file mode 100644 index 000000000000..782143b747b4 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.backup_schedules.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.faults.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.faults.doctree new file mode 100644 index 000000000000..ef8a3e1f7b8e Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.faults.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.flavors.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.flavors.doctree new file mode 100644 index 000000000000..cda06eea5cd0 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.flavors.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.images.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.images.doctree new file mode 100644 index 000000000000..89ad9c9ec3ab Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.images.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.servers.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.servers.doctree new file mode 100644 index 000000000000..a43145bab32f Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.servers.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..api.openstack.sharedipgroups.doctree b/doc/build/html/.doctrees/api/nova..api.openstack.sharedipgroups.doctree new file mode 100644 index 000000000000..22076591f8b2 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..api.openstack.sharedipgroups.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..auth.dbdriver.doctree b/doc/build/html/.doctrees/api/nova..auth.dbdriver.doctree new file mode 100644 index 000000000000..ba8863ec3eb5 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..auth.dbdriver.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..auth.fakeldap.doctree b/doc/build/html/.doctrees/api/nova..auth.fakeldap.doctree new file mode 100644 index 000000000000..c63566ba7f26 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..auth.fakeldap.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..auth.ldapdriver.doctree b/doc/build/html/.doctrees/api/nova..auth.ldapdriver.doctree new file mode 100644 index 000000000000..e1df8e5af513 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..auth.ldapdriver.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..auth.manager.doctree b/doc/build/html/.doctrees/api/nova..auth.manager.doctree new file mode 100644 index 000000000000..a808e5469619 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..auth.manager.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..auth.signer.doctree b/doc/build/html/.doctrees/api/nova..auth.signer.doctree new file mode 100644 index 000000000000..be8b802a6700 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..auth.signer.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..cloudpipe.pipelib.doctree b/doc/build/html/.doctrees/api/nova..cloudpipe.pipelib.doctree new file mode 100644 index 000000000000..24c2e94af856 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..cloudpipe.pipelib.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..compute.disk.doctree b/doc/build/html/.doctrees/api/nova..compute.disk.doctree new file mode 100644 index 000000000000..b4d2e418d51d Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..compute.disk.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..compute.instance_types.doctree b/doc/build/html/.doctrees/api/nova..compute.instance_types.doctree new file mode 100644 index 000000000000..1f77e18de2d9 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..compute.instance_types.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..compute.manager.doctree b/doc/build/html/.doctrees/api/nova..compute.manager.doctree new file mode 100644 index 000000000000..5eb311aad207 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..compute.manager.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..compute.monitor.doctree b/doc/build/html/.doctrees/api/nova..compute.monitor.doctree new file mode 100644 index 000000000000..656324737b15 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..compute.monitor.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..compute.power_state.doctree b/doc/build/html/.doctrees/api/nova..compute.power_state.doctree new file mode 100644 index 000000000000..5ac9e5ac3638 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..compute.power_state.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..context.doctree b/doc/build/html/.doctrees/api/nova..context.doctree new file mode 100644 index 000000000000..e0f618ae6b44 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..context.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..crypto.doctree b/doc/build/html/.doctrees/api/nova..crypto.doctree new file mode 100644 index 000000000000..9062aa13e0bb Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..crypto.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..db.api.doctree b/doc/build/html/.doctrees/api/nova..db.api.doctree new file mode 100644 index 000000000000..381e7a7eb746 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..db.api.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..db.sqlalchemy.api.doctree b/doc/build/html/.doctrees/api/nova..db.sqlalchemy.api.doctree new file mode 100644 index 000000000000..9d60f965968b Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..db.sqlalchemy.api.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..db.sqlalchemy.models.doctree b/doc/build/html/.doctrees/api/nova..db.sqlalchemy.models.doctree new file mode 100644 index 000000000000..b4545c6cf8fa Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..db.sqlalchemy.models.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..db.sqlalchemy.session.doctree b/doc/build/html/.doctrees/api/nova..db.sqlalchemy.session.doctree new file mode 100644 index 000000000000..8c169f08aaff Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..db.sqlalchemy.session.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..exception.doctree b/doc/build/html/.doctrees/api/nova..exception.doctree new file mode 100644 index 000000000000..43c08f7ce1aa Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..exception.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..fakerabbit.doctree b/doc/build/html/.doctrees/api/nova..fakerabbit.doctree new file mode 100644 index 000000000000..bffd1c648321 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..fakerabbit.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..flags.doctree b/doc/build/html/.doctrees/api/nova..flags.doctree new file mode 100644 index 000000000000..d3e58d1bc638 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..flags.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..image.service.doctree b/doc/build/html/.doctrees/api/nova..image.service.doctree new file mode 100644 index 000000000000..d4b4db40cb74 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..image.service.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..manager.doctree b/doc/build/html/.doctrees/api/nova..manager.doctree new file mode 100644 index 000000000000..cba863ab7d20 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..manager.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..network.linux_net.doctree b/doc/build/html/.doctrees/api/nova..network.linux_net.doctree new file mode 100644 index 000000000000..9fa9ea8bdb94 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..network.linux_net.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..network.manager.doctree b/doc/build/html/.doctrees/api/nova..network.manager.doctree new file mode 100644 index 000000000000..6fc68e0ba974 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..network.manager.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..objectstore.bucket.doctree b/doc/build/html/.doctrees/api/nova..objectstore.bucket.doctree new file mode 100644 index 000000000000..9f88b7006a54 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..objectstore.bucket.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..objectstore.handler.doctree b/doc/build/html/.doctrees/api/nova..objectstore.handler.doctree new file mode 100644 index 000000000000..46a6d7638ca4 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..objectstore.handler.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..objectstore.image.doctree b/doc/build/html/.doctrees/api/nova..objectstore.image.doctree new file mode 100644 index 000000000000..f37c9025bcba Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..objectstore.image.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..objectstore.stored.doctree b/doc/build/html/.doctrees/api/nova..objectstore.stored.doctree new file mode 100644 index 000000000000..b776a1fdb78e Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..objectstore.stored.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..process.doctree b/doc/build/html/.doctrees/api/nova..process.doctree new file mode 100644 index 000000000000..9c0ba4e2f6ea Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..process.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..quota.doctree b/doc/build/html/.doctrees/api/nova..quota.doctree new file mode 100644 index 000000000000..9331bc054d4d Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..quota.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..rpc.doctree b/doc/build/html/.doctrees/api/nova..rpc.doctree new file mode 100644 index 000000000000..e20293b36e28 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..rpc.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..scheduler.chance.doctree b/doc/build/html/.doctrees/api/nova..scheduler.chance.doctree new file mode 100644 index 000000000000..543464d3bf4c Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..scheduler.chance.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..scheduler.driver.doctree b/doc/build/html/.doctrees/api/nova..scheduler.driver.doctree new file mode 100644 index 000000000000..26141ae79fe9 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..scheduler.driver.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..scheduler.manager.doctree b/doc/build/html/.doctrees/api/nova..scheduler.manager.doctree new file mode 100644 index 000000000000..02f3b6ce3db9 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..scheduler.manager.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..scheduler.simple.doctree b/doc/build/html/.doctrees/api/nova..scheduler.simple.doctree new file mode 100644 index 000000000000..207eb267146f Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..scheduler.simple.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..server.doctree b/doc/build/html/.doctrees/api/nova..server.doctree new file mode 100644 index 000000000000..d4df9a18c42a Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..server.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..service.doctree b/doc/build/html/.doctrees/api/nova..service.doctree new file mode 100644 index 000000000000..ab06c6158f91 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..service.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..test.doctree b/doc/build/html/.doctrees/api/nova..test.doctree new file mode 100644 index 000000000000..d7a84581e61e Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..test.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.access_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.access_unittest.doctree new file mode 100644 index 000000000000..7464afd08ffa Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.access_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.fakes.doctree b/doc/build/html/.doctrees/api/nova..tests.api.fakes.doctree new file mode 100644 index 000000000000..12fbe3aa9a1f Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.fakes.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.fakes.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.fakes.doctree new file mode 100644 index 000000000000..32ff53359ff2 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.fakes.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_api.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_api.doctree new file mode 100644 index 000000000000..f948ddf25931 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_api.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_auth.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_auth.doctree new file mode 100644 index 000000000000..7e826d0f0bb5 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_auth.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_faults.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_faults.doctree new file mode 100644 index 000000000000..c34d2a36b32e Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_faults.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_flavors.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_flavors.doctree new file mode 100644 index 000000000000..979430fa035b Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_flavors.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_images.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_images.doctree new file mode 100644 index 000000000000..f9b50d078327 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_images.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_ratelimiting.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_ratelimiting.doctree new file mode 100644 index 000000000000..8cf2a10d8887 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_ratelimiting.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_servers.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_servers.doctree new file mode 100644 index 000000000000..2d7148e04a5b Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_servers.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_sharedipgroups.doctree b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_sharedipgroups.doctree new file mode 100644 index 000000000000..f15f42510d2f Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.openstack.test_sharedipgroups.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api.test_wsgi.doctree b/doc/build/html/.doctrees/api/nova..tests.api.test_wsgi.doctree new file mode 100644 index 000000000000..b338e30b47bb Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api.test_wsgi.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api_integration.doctree b/doc/build/html/.doctrees/api/nova..tests.api_integration.doctree new file mode 100644 index 000000000000..40f3bce82955 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api_integration.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.api_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.api_unittest.doctree new file mode 100644 index 000000000000..ec226452cfc3 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.api_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.auth_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.auth_unittest.doctree new file mode 100644 index 000000000000..9a41203794a2 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.auth_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.cloud_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.cloud_unittest.doctree new file mode 100644 index 000000000000..4fd382e6d42d Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.cloud_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.compute_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.compute_unittest.doctree new file mode 100644 index 000000000000..8704fe728679 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.compute_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.declare_flags.doctree b/doc/build/html/.doctrees/api/nova..tests.declare_flags.doctree new file mode 100644 index 000000000000..161b5242c600 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.declare_flags.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.fake_flags.doctree b/doc/build/html/.doctrees/api/nova..tests.fake_flags.doctree new file mode 100644 index 000000000000..183fc8d46a07 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.fake_flags.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.flags_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.flags_unittest.doctree new file mode 100644 index 000000000000..53f669795df0 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.flags_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.network_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.network_unittest.doctree new file mode 100644 index 000000000000..56436d8ed746 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.network_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.objectstore_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.objectstore_unittest.doctree new file mode 100644 index 000000000000..a560cb8c5cab Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.objectstore_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.process_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.process_unittest.doctree new file mode 100644 index 000000000000..f393416e6f24 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.process_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.quota_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.quota_unittest.doctree new file mode 100644 index 000000000000..e001cbe8dfdd Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.quota_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.real_flags.doctree b/doc/build/html/.doctrees/api/nova..tests.real_flags.doctree new file mode 100644 index 000000000000..e5c331eb49a9 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.real_flags.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.rpc_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.rpc_unittest.doctree new file mode 100644 index 000000000000..40c37e09708e Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.rpc_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.runtime_flags.doctree b/doc/build/html/.doctrees/api/nova..tests.runtime_flags.doctree new file mode 100644 index 000000000000..1602d1b71932 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.runtime_flags.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.scheduler_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.scheduler_unittest.doctree new file mode 100644 index 000000000000..2ff5f8320de2 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.scheduler_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.service_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.service_unittest.doctree new file mode 100644 index 000000000000..4522500be018 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.service_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.twistd_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.twistd_unittest.doctree new file mode 100644 index 000000000000..794c02f17b08 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.twistd_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.validator_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.validator_unittest.doctree new file mode 100644 index 000000000000..e1f52b00f287 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.validator_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.virt_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.virt_unittest.doctree new file mode 100644 index 000000000000..5c27b5c28dd2 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.virt_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..tests.volume_unittest.doctree b/doc/build/html/.doctrees/api/nova..tests.volume_unittest.doctree new file mode 100644 index 000000000000..807bbaac24d4 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..tests.volume_unittest.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..twistd.doctree b/doc/build/html/.doctrees/api/nova..twistd.doctree new file mode 100644 index 000000000000..41a9335ee02e Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..twistd.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..utils.doctree b/doc/build/html/.doctrees/api/nova..utils.doctree new file mode 100644 index 000000000000..e801085f2e7d Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..utils.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..validate.doctree b/doc/build/html/.doctrees/api/nova..validate.doctree new file mode 100644 index 000000000000..2f3cd446137c Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..validate.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..virt.connection.doctree b/doc/build/html/.doctrees/api/nova..virt.connection.doctree new file mode 100644 index 000000000000..77789df65fef Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..virt.connection.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..virt.fake.doctree b/doc/build/html/.doctrees/api/nova..virt.fake.doctree new file mode 100644 index 000000000000..9b8ebe42f94c Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..virt.fake.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..virt.images.doctree b/doc/build/html/.doctrees/api/nova..virt.images.doctree new file mode 100644 index 000000000000..abfb4850a58a Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..virt.images.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..virt.libvirt_conn.doctree b/doc/build/html/.doctrees/api/nova..virt.libvirt_conn.doctree new file mode 100644 index 000000000000..d305479a4ee3 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..virt.libvirt_conn.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..virt.xenapi.doctree b/doc/build/html/.doctrees/api/nova..virt.xenapi.doctree new file mode 100644 index 000000000000..0a4e21b8a1f4 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..virt.xenapi.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..volume.driver.doctree b/doc/build/html/.doctrees/api/nova..volume.driver.doctree new file mode 100644 index 000000000000..a62cc606e7d6 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..volume.driver.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..volume.manager.doctree b/doc/build/html/.doctrees/api/nova..volume.manager.doctree new file mode 100644 index 000000000000..0c8b454a1926 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..volume.manager.doctree differ diff --git a/doc/build/html/.doctrees/api/nova..wsgi.doctree b/doc/build/html/.doctrees/api/nova..wsgi.doctree new file mode 100644 index 000000000000..d177a5a8e054 Binary files /dev/null and b/doc/build/html/.doctrees/api/nova..wsgi.doctree differ diff --git a/doc/build/html/.doctrees/cloud101.doctree b/doc/build/html/.doctrees/cloud101.doctree new file mode 100644 index 000000000000..e7667f866d21 Binary files /dev/null and b/doc/build/html/.doctrees/cloud101.doctree differ diff --git a/doc/build/html/.doctrees/code.doctree b/doc/build/html/.doctrees/code.doctree new file mode 100644 index 000000000000..ce5ad4485761 Binary files /dev/null and b/doc/build/html/.doctrees/code.doctree differ diff --git a/doc/build/html/.doctrees/community.doctree b/doc/build/html/.doctrees/community.doctree new file mode 100644 index 000000000000..6837addb6a0e Binary files /dev/null and b/doc/build/html/.doctrees/community.doctree differ diff --git a/doc/build/html/.doctrees/devref/api.doctree b/doc/build/html/.doctrees/devref/api.doctree new file mode 100644 index 000000000000..a999307c0c51 Binary files /dev/null and b/doc/build/html/.doctrees/devref/api.doctree differ diff --git a/doc/build/html/.doctrees/devref/architecture.doctree b/doc/build/html/.doctrees/devref/architecture.doctree new file mode 100644 index 000000000000..b5de0bc694f0 Binary files /dev/null and b/doc/build/html/.doctrees/devref/architecture.doctree differ diff --git a/doc/build/html/.doctrees/devref/auth.doctree b/doc/build/html/.doctrees/devref/auth.doctree new file mode 100644 index 000000000000..c81eba43b415 Binary files /dev/null and b/doc/build/html/.doctrees/devref/auth.doctree differ diff --git a/doc/build/html/.doctrees/devref/cloudpipe.doctree b/doc/build/html/.doctrees/devref/cloudpipe.doctree new file mode 100644 index 000000000000..6c43a0feb060 Binary files /dev/null and b/doc/build/html/.doctrees/devref/cloudpipe.doctree differ diff --git a/doc/build/html/.doctrees/devref/compute.doctree b/doc/build/html/.doctrees/devref/compute.doctree new file mode 100644 index 000000000000..bb56b1c9ae27 Binary files /dev/null and b/doc/build/html/.doctrees/devref/compute.doctree differ diff --git a/doc/build/html/.doctrees/devref/database.doctree b/doc/build/html/.doctrees/devref/database.doctree new file mode 100644 index 000000000000..189239f0f618 Binary files /dev/null and b/doc/build/html/.doctrees/devref/database.doctree differ diff --git a/doc/build/html/.doctrees/devref/development.environment.doctree b/doc/build/html/.doctrees/devref/development.environment.doctree new file mode 100644 index 000000000000..4862bd192e09 Binary files /dev/null and b/doc/build/html/.doctrees/devref/development.environment.doctree differ diff --git a/doc/build/html/.doctrees/devref/fakes.doctree b/doc/build/html/.doctrees/devref/fakes.doctree new file mode 100644 index 000000000000..fe68337e85a0 Binary files /dev/null and b/doc/build/html/.doctrees/devref/fakes.doctree differ diff --git a/doc/build/html/.doctrees/devref/glance.doctree b/doc/build/html/.doctrees/devref/glance.doctree new file mode 100644 index 000000000000..01eec6987bb6 Binary files /dev/null and b/doc/build/html/.doctrees/devref/glance.doctree differ diff --git a/doc/build/html/.doctrees/devref/index.doctree b/doc/build/html/.doctrees/devref/index.doctree new file mode 100644 index 000000000000..8c155355e687 Binary files /dev/null and b/doc/build/html/.doctrees/devref/index.doctree differ diff --git a/doc/build/html/.doctrees/devref/modules.doctree b/doc/build/html/.doctrees/devref/modules.doctree new file mode 100644 index 000000000000..e6dcde834b0a Binary files /dev/null and b/doc/build/html/.doctrees/devref/modules.doctree differ diff --git a/doc/build/html/.doctrees/devref/network.doctree b/doc/build/html/.doctrees/devref/network.doctree new file mode 100644 index 000000000000..da867cb86371 Binary files /dev/null and b/doc/build/html/.doctrees/devref/network.doctree differ diff --git a/doc/build/html/.doctrees/devref/nova.doctree b/doc/build/html/.doctrees/devref/nova.doctree new file mode 100644 index 000000000000..f823fa17086e Binary files /dev/null and b/doc/build/html/.doctrees/devref/nova.doctree differ diff --git a/doc/build/html/.doctrees/devref/objectstore.doctree b/doc/build/html/.doctrees/devref/objectstore.doctree new file mode 100644 index 000000000000..45ab43f49bee Binary files /dev/null and b/doc/build/html/.doctrees/devref/objectstore.doctree differ diff --git a/doc/build/html/.doctrees/devref/scheduler.doctree b/doc/build/html/.doctrees/devref/scheduler.doctree new file mode 100644 index 000000000000..69a7337bdb97 Binary files /dev/null and b/doc/build/html/.doctrees/devref/scheduler.doctree differ diff --git a/doc/build/html/.doctrees/devref/services.doctree b/doc/build/html/.doctrees/devref/services.doctree new file mode 100644 index 000000000000..4c3c9c52fad6 Binary files /dev/null and b/doc/build/html/.doctrees/devref/services.doctree differ diff --git a/doc/build/html/.doctrees/devref/volume.doctree b/doc/build/html/.doctrees/devref/volume.doctree new file mode 100644 index 000000000000..a565a959230b Binary files /dev/null and b/doc/build/html/.doctrees/devref/volume.doctree differ diff --git a/doc/build/html/.doctrees/environment.pickle b/doc/build/html/.doctrees/environment.pickle new file mode 100644 index 000000000000..6fd05ef44495 Binary files /dev/null and b/doc/build/html/.doctrees/environment.pickle differ diff --git a/doc/build/html/.doctrees/index.doctree b/doc/build/html/.doctrees/index.doctree new file mode 100644 index 000000000000..0ce64eaea4ba Binary files /dev/null and b/doc/build/html/.doctrees/index.doctree differ diff --git a/doc/build/html/.doctrees/installer.doctree b/doc/build/html/.doctrees/installer.doctree new file mode 100644 index 000000000000..b193cbe32d58 Binary files /dev/null and b/doc/build/html/.doctrees/installer.doctree differ diff --git a/doc/build/html/.doctrees/livecd.doctree b/doc/build/html/.doctrees/livecd.doctree new file mode 100644 index 000000000000..7e9ae7f3eac6 Binary files /dev/null and b/doc/build/html/.doctrees/livecd.doctree differ diff --git a/doc/build/html/.doctrees/man/novamanage.doctree b/doc/build/html/.doctrees/man/novamanage.doctree new file mode 100644 index 000000000000..78a658e480e5 Binary files /dev/null and b/doc/build/html/.doctrees/man/novamanage.doctree differ diff --git a/doc/build/html/.doctrees/nova.concepts.doctree b/doc/build/html/.doctrees/nova.concepts.doctree new file mode 100644 index 000000000000..71fcc46bf16f Binary files /dev/null and b/doc/build/html/.doctrees/nova.concepts.doctree differ diff --git a/doc/build/html/.doctrees/object.model.doctree b/doc/build/html/.doctrees/object.model.doctree new file mode 100644 index 000000000000..16500b8e9c53 Binary files /dev/null and b/doc/build/html/.doctrees/object.model.doctree differ diff --git a/doc/build/html/.doctrees/quickstart.doctree b/doc/build/html/.doctrees/quickstart.doctree new file mode 100644 index 000000000000..fad66f8ddd5f Binary files /dev/null and b/doc/build/html/.doctrees/quickstart.doctree differ diff --git a/doc/build/html/.doctrees/service.architecture.doctree b/doc/build/html/.doctrees/service.architecture.doctree new file mode 100644 index 000000000000..4fc09dd05ace Binary files /dev/null and b/doc/build/html/.doctrees/service.architecture.doctree differ diff --git a/doc/build/html/_images/cloudpipe.png b/doc/build/html/_images/cloudpipe.png new file mode 100644 index 000000000000..ffdd181f26a4 Binary files /dev/null and b/doc/build/html/_images/cloudpipe.png differ diff --git a/doc/build/html/_images/fabric.png b/doc/build/html/_images/fabric.png new file mode 100644 index 000000000000..a5137e377f85 Binary files /dev/null and b/doc/build/html/_images/fabric.png differ diff --git a/doc/build/html/_sources/adminguide/binaries.txt b/doc/build/html/_sources/adminguide/binaries.txt new file mode 100644 index 000000000000..25605adf94fc --- /dev/null +++ b/doc/build/html/_sources/adminguide/binaries.txt @@ -0,0 +1,57 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +.. _binaries: + +Nova Daemons +============= + +The configuration of these binaries relies on "flagfiles" using the google +gflags package:: + + $ nova-xxxxx --flagfile flagfile + +The binaries can all run on the same machine or be spread out amongst multiple boxes in a large deployment. + +nova-api +-------- + +Nova api receives xml requests and sends them to the rest of the system. It is a wsgi app that routes and authenticate requests. It supports the ec2 and openstack apis. + +nova-objectstore +---------------- + +Nova objectstore is an ultra simple file-based storage system for images that replicates most of the S3 Api. It will soon be replaced with glance and a simple image manager. + +nova-compute +------------ + +Nova compute is responsible for managing virtual machines. It loads a Service object which exposes the public methods on ComputeManager via rpc. + +nova-volume +----------- + +Nova volume is responsible for managing attachable block storage devices. It loads a Service object which exposes the public methods on VolumeManager via rpc. + +nova-network +------------ + +Nova network is responsible for managing floating and fixed ips, dhcp, bridging and vlans. It loads a Service object which exposes the public methods on one of the subclasses of NetworkManager. Different networking strategies are as simple as changing the network_manager flag:: + + $ nova-network --network_manager=nova.network.manager.FlatManager + +IMPORTANT: Make sure that you also set the network_manager on nova-api and nova_compute, since make some calls to network manager in process instead of through rpc. More information on the interactions between services, managers, and drivers can be found :ref:`here ` diff --git a/doc/build/html/_sources/adminguide/distros/others.txt b/doc/build/html/_sources/adminguide/distros/others.txt new file mode 100644 index 000000000000..ec14a9abb2b1 --- /dev/null +++ b/doc/build/html/_sources/adminguide/distros/others.txt @@ -0,0 +1,88 @@ +Installation on other distros (like Debian, Fedora or CentOS ) +============================================================== + +Feel free to add additional notes for additional distributions. + +Nova installation on CentOS 5.5 +------------------------------- + +These are notes for installing OpenStack Compute on CentOS 5.5 and will be updated but are NOT final. Please test for accuracy and edit as you see fit. + +The principle botleneck for running nova on centos in python 2.6. Nova is written in python 2.6 and CentOS 5.5. comes with python 2.4. We can not update python system wide as some core utilities (like yum) is dependent on python 2.4. Also very few python 2.6 modules are available in centos/epel repos. + +Pre-reqs +-------- + +Add euca2ools and EPEL repo first.:: + + cat >/etc/yum.repos.d/euca2ools.repo << EUCA_REPO_CONF_EOF + [eucalyptus] + name=euca2ools + baseurl=http://www.eucalyptussoftware.com/downloads/repo/euca2ools/1.3.1/yum/centos/ + enabled=1 + gpgcheck=0 + + EUCA_REPO_CONF_EOF + +:: + + rpm -Uvh 'http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm' + +Now install python2.6, kvm and few other libraries through yum:: + + yum -y install dnsmasq vblade kpartx kvm gawk iptables ebtables bzr screen euca2ools curl rabbitmq-server gcc gcc-c++ autoconf automake swig openldap openldap-servers nginx python26 python26-devel python26-distribute git openssl-devel python26-tools mysql-server qemu kmod-kvm libxml2 libxslt libxslt-devel mysql-devel + +Then download the latest aoetools and then build(and install) it, check for the latest version on sourceforge, exact url will change if theres a new release:: + + wget -c http://sourceforge.net/projects/aoetools/files/aoetools/32/aoetools-32.tar.gz/download + tar -zxvf aoetools-32.tar.gz + cd aoetools-32 + make + make install + +Add the udev rules for aoetools:: + + cat > /etc/udev/rules.d/60-aoe.rules << AOE_RULES_EOF + SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" + SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k", GROUP="disk", MODE="0440" + SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" + SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220" + # aoe block devices + KERNEL=="etherd*", NAME="%k", GROUP="disk" + AOE_RULES_EOF + +Load the kernel modules:: + + modprobe aoe + +:: + + modprobe kvm + +Now, install the python modules using easy_install-2.6, this ensures the installation are done against python 2.6 + + +easy_install-2.6 twisted sqlalchemy mox greenlet carrot daemon eventlet tornado IPy routes lxml MySQL-python +python-gflags need to be downloaded and installed manually, use these commands (check the exact url for newer releases ): + +:: + + wget -c "http://python-gflags.googlecode.com/files/python-gflags-1.4.tar.gz" + tar -zxvf python-gflags-1.4.tar.gz + cd python-gflags-1.4 + python2.6 setup.py install + cd .. + +Same for python2.6-libxml2 module, notice the --with-python and --prefix flags. --with-python ensures we are building it against python2.6 (otherwise it will build against python2.4, which is default):: + + wget -c "ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz" + tar -zxvf libxml2-2.7.3.tar.gz + cd libxml2-2.7.3 + ./configure --with-python=/usr/bin/python26 --prefix=/usr + make all + make install + cd python + python2.6 setup.py install + cd .. + +Once you've done this, continue at Step 3 here: :doc:`../single.node.install` diff --git a/doc/build/html/_sources/adminguide/distros/ubuntu.10.04.txt b/doc/build/html/_sources/adminguide/distros/ubuntu.10.04.txt new file mode 100644 index 000000000000..ce368fab8ddc --- /dev/null +++ b/doc/build/html/_sources/adminguide/distros/ubuntu.10.04.txt @@ -0,0 +1,41 @@ +Installing on Ubuntu 10.04 (Lucid) +================================== + +Step 1: Install dependencies +---------------------------- +Grab the latest code from launchpad: + +:: + + bzr clone lp:nova + +Here's a script you can use to install (and then run) Nova on Ubuntu or Debian (when using Debian, edit nova.sh to have USE_PPA=0): + +.. todo:: give a link to a stable releases page + +Step 2: Install dependencies +---------------------------- + +Nova requires rabbitmq for messaging and optionally you can use redis for storing state, so install these first. + +*Note:* You must have sudo installed to run these commands as shown here. + +:: + + sudo apt-get install rabbitmq-server redis-server + + +You'll see messages starting with "Reading package lists... Done" and you must confirm by typing Y that you want to continue. + +If you're running on Ubuntu 10.04, you'll need to install Twisted and python-gflags which is included in the OpenStack PPA. + +:: + + sudo apt-get install python-twisted + + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 95C71FE2 + sudo sh -c 'echo "deb http://ppa.launchpad.net/openstack/openstack-ppa/ubuntu lucid main" > /etc/apt/sources.list.d/openstackppa.list' + sudo apt-get update && sudo apt-get install python-gflags + + +Once you've done this, continue at Step 3 here: :doc:`../single.node.install` diff --git a/doc/build/html/_sources/adminguide/distros/ubuntu.10.10.txt b/doc/build/html/_sources/adminguide/distros/ubuntu.10.10.txt new file mode 100644 index 000000000000..a3fa2def1ed6 --- /dev/null +++ b/doc/build/html/_sources/adminguide/distros/ubuntu.10.10.txt @@ -0,0 +1,41 @@ +Installing on Ubuntu 10.10 (Maverick) +===================================== +Single Machine Installation (Ubuntu 10.10) + +While we wouldn't expect you to put OpenStack Compute into production on a non-LTS version of Ubuntu, these instructions are up-to-date with the latest version of Ubuntu. + +Make sure you are running Ubuntu 10.10 so that the packages will be available. This install requires more than 70 MB of free disk space. + +These instructions are based on Soren Hansen's blog entry, Openstack on Maverick. A script is in progress as well. + +Step 1: Install required prerequisites +-------------------------------------- +Nova requires rabbitmq for messaging and redis for storing state (for now), so we'll install these first.:: + + sudo apt-get install rabbitmq-server redis-server + +You'll see messages starting with "Reading package lists... Done" and you must confirm by typing Y that you want to continue. + +Step 2: Install Nova packages available in Maverick Meerkat +----------------------------------------------------------- +Type or copy/paste in the following line to get the packages that you use to run OpenStack Compute.:: + + sudo apt-get install python-nova + sudo apt-get install nova-api nova-objectstore nova-compute nova-scheduler nova-network euca2ools unzip + +You'll see messages starting with "Reading package lists... Done" and you must confirm by typing Y that you want to continue. This operation may take a while as many dependent packages will be installed. Note: there is a dependency problem with python-nova which can be worked around by installing first. + +When the installation is complete, you'll see the following lines confirming::: + + Adding system user `nova' (UID 106) ... + Adding new user `nova' (UID 106) with group `nogroup' ... + Not creating home directory `/var/lib/nova'. + Setting up nova-scheduler (0.9.1~bzr331-0ubuntu2) ... + * Starting nova scheduler nova-scheduler + WARNING:root:Starting scheduler node + ...done. + Processing triggers for libc-bin ... + ldconfig deferred processing now taking place + Processing triggers for python-support ... + +Once you've done this, continue at Step 3 here: :doc:`../single.node.install` diff --git a/doc/build/html/_sources/adminguide/euca2ools.txt b/doc/build/html/_sources/adminguide/euca2ools.txt new file mode 100644 index 000000000000..6f0c57358837 --- /dev/null +++ b/doc/build/html/_sources/adminguide/euca2ools.txt @@ -0,0 +1,49 @@ +Euca2ools +========= + +Nova is compatible with most of the euca2ools command line utilities. Both Administrators and Users will find these tools helpful for day-to-day administration. + +* euca-add-group +* euca-delete-bundle +* euca-describe-instances +* euca-register +* euca-add-keypair +* euca-delete-group +* euca-describe-keypairs +* euca-release-address +* euca-allocate-address +* euca-delete-keypair +* euca-describe-regions +* euca-reset-image-attribute +* euca-associate-address +* euca-delete-snapshot +* euca-describe-snapshots +* euca-revoke +* euca-attach-volume +* euca-delete-volume +* euca-describe-volumes +* euca-run-instances +* euca-authorize +* euca-deregister +* euca-detach-volume +* euca-terminate-instances +* euca-bundle-image +* euca-describe-addresses +* euca-disassociate-address +* euca-unbundle +* euca-bundle-vol +* euca-describe-availability-zones +* euca-download-bundle +* euca-upload-bundle +* euca-confirm-product-instance +* euca-describe-groups +* euca-get-console-output +* euca-version +* euca-create-snapshot +* euca-describe-image-attribute +* euca-modify-image-attribute +* euca-create-volume +* euca-describe-images +* euca-reboot-instances + + diff --git a/doc/build/html/_sources/adminguide/flags.txt b/doc/build/html/_sources/adminguide/flags.txt new file mode 100644 index 000000000000..4c950aa88626 --- /dev/null +++ b/doc/build/html/_sources/adminguide/flags.txt @@ -0,0 +1,23 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Flags and Flagfiles +=================== + +* python-gflags +* flagfiles +* list of flags by component (see concepts list) diff --git a/doc/build/html/_sources/adminguide/getting.started.txt b/doc/build/html/_sources/adminguide/getting.started.txt new file mode 100644 index 000000000000..7075a0b02f9d --- /dev/null +++ b/doc/build/html/_sources/adminguide/getting.started.txt @@ -0,0 +1,168 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Getting Started with Nova +========================= + +This code base is continually changing, so dependencies also change. If you +encounter any problems, see the :doc:`../community` page. +The `contrib/nova.sh` script should be kept up to date, and may be a good +resource to review when debugging. + +The purpose of this document is to get a system installed that you can use to +test your setup assumptions. Working from this base installtion you can +tweak configurations and work with different flags to monitor interaction with +your hardware, network, and other factors that will allow you to determine +suitability for your deployment. After following this setup method, you should +be able to experiment with different managers, drivers, and flags to get the +best performance. + +Dependencies +------------ + +Related servers we rely on + +* **RabbitMQ**: messaging queue, used for all communication between components + +Optional servers + +* **OpenLDAP**: By default, the auth server uses the RDBMS-backed datastore by + setting FLAGS.auth_driver to `nova.auth.dbdriver.DbDriver`. But OpenLDAP + (or LDAP) could be configured by specifying `nova.auth.ldapdriver.LdapDriver`. + There is a script in the sources (`nova/auth/slap.sh`) to install a very basic + openldap server on ubuntu. +* **ReDIS**: There is a fake ldap auth driver + `nova.auth.ldapdriver.FakeLdapDriver` that backends to redis. This was + created for testing ldap implementation on systems that don't have an easy + means to install ldap. +* **MySQL**: Either MySQL or another database supported by sqlalchemy needs to + be avilable. Currently, only sqlite3 an mysql have been tested. + +Python libraries that we use (from pip-requires): + +.. literalinclude:: ../../../tools/pip-requires + +Other libraries: + +* **XenAPI**: Needed only for Xen Cloud Platform or XenServer support. Available + from http://wiki.xensource.com/xenwiki/XCP_SDK or + http://community.citrix.com/cdn/xs/sdks. + +External unix tools that are required: + +* iptables +* ebtables +* gawk +* curl +* kvm +* libvirt +* dnsmasq +* vlan +* open-iscsi and iscsitarget (if you use iscsi volumes) +* aoetools and vblade-persist (if you use aoe-volumes) + +Nova uses cutting-edge versions of many packages. There are ubuntu packages in +the nova-core ppa. You can use add this ppa to your sources list on an ubuntu +machine with the following commands:: + + sudo apt-get install -y python-software-properties + sudo add-apt-repository ppa:nova-core/ppa + +Recommended +----------- + +* euca2ools: python implementation of aws ec2-tools and ami tools +* build tornado to use C module for evented section + + +Installation +-------------- + +You can install from packages for your particular Linux distribution if they are +available. Otherwise you can install from source by checking out the source +files from the `Nova Source Code Repository `_ +and running:: + + python setup.py install + +Configuration +--------------- + +Configuring the host system +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +As you read through the Administration Guide you will notice configuration hints +inline with documentation on the subsystem you are configuring. Presented in +this "Getting Started with Nova" document, we only provide what you need to +get started as quickly as possible. For a more detailed description of system +configuration, start reading through :doc:`multi.node.install`. + +* Create a volume group (you can use an actual disk for the volume group as + well):: + + # This creates a 1GB file to create volumes out of + dd if=/dev/zero of=MY_FILE_PATH bs=100M count=10 + losetup --show -f MY_FILE_PATH + # replace /dev/loop0 below with whatever losetup returns + # nova-volumes is the default for the --volume_group flag + vgcreate nova-volumes /dev/loop0 + + +Configuring Nova +~~~~~~~~~~~~~~~~ + +Configuration of the entire system is performed through python-gflags. The +best way to track configuration is through the use of a flagfile. + +A flagfile is specified with the ``--flagfile=FILEPATH`` argument to the binary +when you launch it. Flagfiles for nova are typically stored in +``/etc/nova/nova.conf``, and flags specific to a certain program are stored in +``/etc/nova/nova-COMMAND.conf``. Each configuration file can include another +flagfile, so typically a file like ``nova-manage.conf`` would have as its first +line ``--flagfile=/etc/nova/nova.conf`` to load the common flags before +specifying overrides or additional options. + +A sample configuration to test the system follows:: + + --verbose + --nodaemon + --FAKE_subdomain=ec2 + --auth_driver=nova.auth.dbdriver.DbDriver + +Running +--------- + +There are many parts to the nova system, each with a specific function. They +are built to be highly-available, so there are may configurations they can be +run in (ie: on many machines, many listeners per machine, etc). This part +of the guide only gets you started quickly, to learn about HA options, see +:doc:`multi.node.install`. + +Launch supporting services + +* rabbitmq +* redis (optional) +* mysql (optional) +* openldap (optional) + +Launch nova components, each should have ``--flagfile=/etc/nova/nova.conf`` + +* nova-api +* nova-compute +* nova-objectstore +* nova-volume +* nova-scheduler diff --git a/doc/build/html/_sources/adminguide/index.txt b/doc/build/html/_sources/adminguide/index.txt new file mode 100644 index 000000000000..51228b3191cc --- /dev/null +++ b/doc/build/html/_sources/adminguide/index.txt @@ -0,0 +1,90 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Administration Guide +==================== + +This guide describes the basics of running and managing Nova. + +Running the Cloud +----------------- + +The fastest way to get a test cloud running is by following the directions in the :doc:`../quickstart`. + +Nova's cloud works via the interaction of a series of daemon processes that reside persistently on the host machine(s). Fortunately, the :doc:`../quickstart` process launches sample versions of all these daemons for you. Once you are familiar with basic Nova usage, you can learn more about daemons by reading :doc:`../service.architecture` and :doc:`binaries`. + +Administration Utilities +------------------------ + +There are two main tools that a system administrator will find useful to manage their Nova cloud: + +.. toctree:: + :maxdepth: 1 + + nova.manage + euca2ools + +nova-manage may only be run by users with admin priviledges. euca2ools can be used by all users, though specific commands may be restricted by Role Based Access Control. You can read more about creating and managing users in :doc:`managing.users` + +User and Resource Management +---------------------------- + +nova-manage and euca2ools provide the basic interface to perform a broad range of administration functions. In this section, you can read more about how to accomplish specific administration tasks. + +For background on the core objects refenced in this section, see :doc:`../object.model` + +.. toctree:: + :maxdepth: 1 + + managing.users + managing.projects + managing.instances + managing.images + managing.volumes + managing.networks + +Deployment +---------- + +.. todo:: talk about deployment scenarios + +.. toctree:: + :maxdepth: 1 + + multi.node.install + + +Networking +^^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + multi.node.install + network.vlan.rst + network.flat.rst + + +Advanced Topics +--------------- + +.. toctree:: + :maxdepth: 1 + + flags + monitoring + diff --git a/doc/build/html/_sources/adminguide/managing.images.txt b/doc/build/html/_sources/adminguide/managing.images.txt new file mode 100644 index 000000000000..df71db23b91b --- /dev/null +++ b/doc/build/html/_sources/adminguide/managing.images.txt @@ -0,0 +1,21 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Managing Images +=============== + +.. todo:: Put info on managing images here! diff --git a/doc/build/html/_sources/adminguide/managing.instances.txt b/doc/build/html/_sources/adminguide/managing.instances.txt new file mode 100644 index 000000000000..d97567bb2c58 --- /dev/null +++ b/doc/build/html/_sources/adminguide/managing.instances.txt @@ -0,0 +1,59 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Managing Instances +================== + +Keypairs +-------- + +Images can be shared by many users, so it is dangerous to put passwords into the images. Nova therefore supports injecting ssh keys into instances before they are booted. This allows a user to login to the instances that he or she creates securely. Generally the first thing that a user does when using the system is create a keypair. Nova generates a public and private key pair, and sends the private key to the user. The public key is stored so that it can be injected into instances. + +Keypairs are created through the api. They can be created on the command line using the euca2ools script euca-add-keypair. Refer to the man page for the available options. Example usage:: + + euca-add-keypair test > test.pem + chmod 600 test.pem + euca-run-instances -k test -t m1.tiny ami-tiny + # wait for boot + ssh -i test.pem root@ip.of.instance + + +Basic Management +---------------- +Instance management can be accomplished with euca commands: + + +To run an instance: + +:: + + euca-run-instances + + +To terminate an instance: + +:: + + euca-terminate-instances + +To reboot an instance: + +:: + + euca-reboot-instances + +See the euca2ools documentation for more information diff --git a/doc/build/html/_sources/adminguide/managing.networks.txt b/doc/build/html/_sources/adminguide/managing.networks.txt new file mode 100644 index 000000000000..c8df471e84ad --- /dev/null +++ b/doc/build/html/_sources/adminguide/managing.networks.txt @@ -0,0 +1,85 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + Overview Sections Copyright 2010 Citrix + All Rights Reserved. + + 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. + +Networking Overview +=================== +In Nova, users organize their cloud resources in projects. A Nova project consists of a number of VM instances created by a user. For each VM instance, Nova assigns to it a private IP address. (Currently, Nova only supports Linux bridge networking that allows the virtual interfaces to connect to the outside network through the physical interface. Other virtual network technologies, such as Open vSwitch, could be supported in the future.) The Network Controller provides virtual networks to enable compute servers to interact with each other and with the public network. + +.. + (perhaps some of this should be moved elsewhere) + Introduction + ------------ + + Nova consists of seven main components, with the Cloud Controller component representing the global state and interacting with all other components. API Server acts as the Web services front end for the cloud controller. Compute Controller provides compute server resources, and the Object Store component provides storage services. Auth Manager provides authentication and authorization services. Volume Controller provides fast and permanent block-level storage for the comput servers. Network Controller provides virtual networks to enable compute servers to interact with each other and with the public network. Scheduler selects the most suitable compute controller to host an instance. + + .. todo:: Insert Figure 1 image from "An OpenStack Network Overview" contributed by Citrix + + Nova is built on a shared-nothing, messaging-based architecture. All of the major components, that is Compute Controller, Volume Controller, Network Controller, and Object Store can be run on multiple servers. Cloud Controller communicates with Object Store via HTTP (Hyper Text Transfer Protocol), but it communicates with Scheduler, Network Controller, and Volume Controller via AMQP (Advanced Message Queue Protocol). To avoid blocking each component while waiting for a response, Nova uses asynchronous calls, with a call-back that gets triggered when a response is received. + + To achieve the shared-nothing property with multiple copies of the same component, Nova keeps all the cloud system state in a distributed data store. Updates to system state are written into this store, using atomic transactions when required. Requests for system state are read out of this store. In limited cases, the read results are cached within controllers for short periods of time (for example, the current list of system users.) + + .. note:: The database schema is available on the `OpenStack Wiki _`. + +Nova Network Strategies +----------------------- + +Currently, Nova supports three kinds of networks, implemented in three "Network Manager" types respectively: Flat Network Manager, Flat DHCP Network Manager, and VLAN Network Manager. The three kinds of networks can c-exist in a cloud system. However, the scheduler for selecting the type of network for a given project is not yet implemented. Here is a brief description of each of the different network strategies, with a focus on the VLAN Manager in a separate section. + +Read more about Nova network strategies here: + +.. toctree:: + :maxdepth: 1 + + network.flat.rst + network.vlan.rst + + +Network Management Commands +--------------------------- + +Admins and Network Administrators can use the 'nova-manage' command to manage network resources: + +VPN Management +~~~~~~~~~~~~~~ + +* vpn list: Print a listing of the VPNs for all projects. + * arguments: none +* vpn run: Start the VPN for a given project. + * arguments: project +* vpn spawn: Run all VPNs. + * arguments: none + + +Floating IP Management +~~~~~~~~~~~~~~~~~~~~~~ + +* floating create: Creates floating ips for host by range + * arguments: host ip_range +* floating delete: Deletes floating ips by range + * arguments: range +* floating list: Prints a listing of all floating ips + * arguments: none + +Network Management +~~~~~~~~~~~~~~~~~~ + +* network create: Creates fixed ips for host by range + * arguments: [fixed_range=FLAG], [num_networks=FLAG], + [network_size=FLAG], [vlan_start=FLAG], + [vpn_start=FLAG] + diff --git a/doc/build/html/_sources/adminguide/managing.projects.txt b/doc/build/html/_sources/adminguide/managing.projects.txt new file mode 100644 index 000000000000..b592e14d77d4 --- /dev/null +++ b/doc/build/html/_sources/adminguide/managing.projects.txt @@ -0,0 +1,68 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Managing Projects +================= + +Projects are isolated resource containers forming the principal organizational structure within Nova. They consist of a separate vlan, volumes, instances, images, keys, and users. + +Although the original ec2 api only supports users, nova adds the concept of projects. A user can specify which project he or she wishes to use by appending `:project_id` to his or her access key. If no project is specified in the api request, nova will attempt to use a project with the same id as the user. + +The api will return NotAuthorized if a normal user attempts to make requests for a project that he or she is not a member of. Note that admins or users with special admin roles skip this check and can make requests for any project. + +To create a project, use the `project create` command of nova-manage. The syntax is nova-manage project create projectname manager_id [description] You must specify a projectname and a manager_id. For example:: + nova-manage project create john_project john "This is a sample project" + +You can add and remove users from projects with `project add` and `project remove`:: + nova-manage project add john_project john + nova-manage project remove john_project john + +Project Commands +---------------- + +Admins and Project Managers can use the 'nova-manage project' command to manage project resources: + +* project add: Adds user to project + * arguments: project user +* project create: Creates a new project + * arguments: name project_manager [description] +* project delete: Deletes an existing project + * arguments: project_id +* project environment: Exports environment variables to an sourcable file + * arguments: project_id user_id [filename='novarc] +* project list: lists all projects + * arguments: none +* project remove: Removes user from project + * arguments: project user +* project scrub: Deletes data associated with project + * arguments: project +* project zipfile: Exports credentials for project to a zip file + * arguments: project_id user_id [filename='nova.zip] + +Setting Quotas +-------------- +Nova utilizes a quota system at the project level to control resource consumption across available hardware resources. Current quota controls are available to limit the: + +* Number of volumes which may be created +* Total size of all volumes within a project as measured in GB +* Number of instances which may be launched +* Number of processor cores which may be allocated +* Publicly accessible IP addresses + +Use the following command to set quotas for a project +* project quota: Set or display quotas for project + * arguments: project_id [key] [value] diff --git a/doc/build/html/_sources/adminguide/managing.users.txt b/doc/build/html/_sources/adminguide/managing.users.txt new file mode 100644 index 000000000000..392142e86f8b --- /dev/null +++ b/doc/build/html/_sources/adminguide/managing.users.txt @@ -0,0 +1,82 @@ +Managing Users +============== + + +Users and Access Keys +--------------------- + +Access to the ec2 api is controlled by an access and secret key. The user's access key needs to be included in the request, and the request must be signed with the secret key. Upon receipt of api requests, nova will verify the signature and execute commands on behalf of the user. + +In order to begin using nova, you will need a to create a user. This can be easily accomplished using the user create or user admin commands in nova-manage. `user create` will create a regular user, whereas `user admin` will create an admin user. The syntax of the command is nova-manage user create username [access] [secret]. For example:: + + nova-manage user create john my-access-key a-super-secret-key + +If you do not specify an access or secret key, a random uuid will be created automatically. + +Credentials +----------- + +Nova can generate a handy set of credentials for a user. These credentials include a CA for bundling images and a file for setting environment variables to be used by euca2ools. If you don't need to bundle images, just the environment script is required. You can export one with the `project environment` command. The syntax of the command is nova-manage project environment project_id user_id [filename]. If you don't specify a filename, it will be exported as novarc. After generating the file, you can simply source it in bash to add the variables to your environment:: + + nova-manage project environment john_project john + . novarc + +If you do need to bundle images, you will need to get all of the credentials using `project zipfile`. Note that zipfile will give you an error message if networks haven't been created yet. Otherwise zipfile has the same syntax as environment, only the default file name is nova.zip. Example usage:: + + nova-manage project zipfile john_project john + unzip nova.zip + . novarc + +Role Based Access Control +------------------------- +Roles control the api actions that a user is allowed to perform. For example, a user cannot allocate a public ip without the `netadmin` role. It is important to remember that a users de facto permissions in a project is the intersection of user (global) roles and project (local) roles. So for john to have netadmin permissions in his project, he needs to separate roles specified. You can add roles with `role add`. The syntax is nova-manage role add user_id role [project_id]. Let's give john the netadmin role for his project:: + + nova-manage role add john netadmin + nova-manage role add john netadmin john_project + +Role-based access control (RBAC) is an approach to restricting system access to authorized users based on an individual’s role within an organization. Various employee functions require certain levels of system access in order to be successful. These functions are mapped to defined roles and individuals are categorized accordingly. Since users are not assigned permissions directly, but only acquire them through their role (or roles), management of individual user rights becomes a matter of assigning appropriate roles to the user. This simplifies common operations, such as adding a user, or changing a user's department. + +Nova’s rights management system employs the RBAC model and currently supports the following five roles: + +* **Cloud Administrator.** (admin) Users of this class enjoy complete system access. +* **IT Security.** (itsec) This role is limited to IT security personnel. It permits role holders to quarantine instances. +* **Project Manager.** (projectmanager)The default for project owners, this role affords users the ability to add other users to a project, interact with project images, and launch and terminate instances. +* **Network Administrator.** (netadmin) Users with this role are permitted to allocate and assign publicly accessible IP addresses as well as create and modify firewall rules. +* **Developer.** This is a general purpose role that is assigned to users by default. + +RBAC management is exposed through the dashboard for simplified user management. + + +User Commands +~~~~~~~~~~~~ + +Users, including admins, are created through the ``user`` commands. + +* user admin: creates a new admin and prints exports + * arguments: name [access] [secret] +* user create: creates a new user and prints exports + * arguments: name [access] [secret] +* user delete: deletes an existing user + * arguments: name +* user exports: prints access and secrets for user in export format + * arguments: name +* user list: lists all users + * arguments: none +* user modify: update a users keys & admin flag + * arguments: accesskey secretkey admin + * leave any field blank to ignore it, admin should be 'T', 'F', or blank + + +User Role Management +~~~~~~~~~~~~~~~~~~~~ + +* role add: adds role to user + * if project is specified, adds project specific role + * arguments: user, role [project] +* role has: checks to see if user has role + * if project is specified, returns True if user has + the global role and the project role + * arguments: user, role [project] +* role remove: removes role from user + * if project is specified, removes project specific role + * arguments: user, role [project] diff --git a/doc/build/html/_sources/adminguide/managingsecurity.txt b/doc/build/html/_sources/adminguide/managingsecurity.txt new file mode 100644 index 000000000000..3b11b181a3bc --- /dev/null +++ b/doc/build/html/_sources/adminguide/managingsecurity.txt @@ -0,0 +1,39 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Security Considerations +======================= + +.. todo:: This doc is vague and just high-level right now. Describe architecture that enables security. + +The goal of securing a cloud computing system involves both protecting the instances, data on the instances, and +ensuring users are authenticated for actions and that borders are understood by the users and the system. +Protecting the system from intrusion or attack involves authentication, network protections, and +compromise detection. + +Key Concepts +------------ + +Authentication - Each instance is authenticated with a key pair. + +Network - Instances can communicate with each other but you can configure the boundaries through firewall +configuration. + +Monitoring - Log all API commands and audit those logs. + +Encryption - Data transfer between instances is not encrypted. + diff --git a/doc/build/html/_sources/adminguide/monitoring.txt b/doc/build/html/_sources/adminguide/monitoring.txt new file mode 100644 index 000000000000..e7766a6e7415 --- /dev/null +++ b/doc/build/html/_sources/adminguide/monitoring.txt @@ -0,0 +1,27 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Monitoring +========== + +* components +* throughput +* exceptions +* hardware + +* ganglia +* syslog diff --git a/doc/build/html/_sources/adminguide/multi.node.install.txt b/doc/build/html/_sources/adminguide/multi.node.install.txt new file mode 100644 index 000000000000..fa0652bc87e6 --- /dev/null +++ b/doc/build/html/_sources/adminguide/multi.node.install.txt @@ -0,0 +1,298 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Installing Nova on Multiple Servers +=================================== + +When you move beyond evaluating the technology and into building an actual +production environemnt, you will need to know how to configure your datacenter +and how to deploy components across your clusters. This guide should help you +through that process. + +You can install multiple nodes to increase performance and availability of the OpenStack Compute installation. + +This setup is based on an Ubuntu Lucid 10.04 installation with the latest updates. Most of this works around issues that need to be resolved in the installation and configuration scripts as of October 18th 2010. It also needs to eventually be generalized, but the intent here is to get the multi-node configuration bootstrapped so folks can move forward. + + +Requirements for a multi-node installation +------------------------------------------ + +* You need a real database, compatible with SQLAlchemy (mysql, postgresql) There's not a specific reason to choose one over another, it basically depends what you know. MySQL is easier to do High Availability (HA) with, but people may already know Postgres. We should document both configurations, though. +* For a recommended HA setup, consider a MySQL master/slave replication, with as many slaves as you like, and probably a heartbeat to kick one of the slaves into being a master if it dies. +* For performance optimization, split reads and writes to the database. MySQL proxy is the easiest way to make this work if running MySQL. + + +Assumptions +^^^^^^^^^^^ + +* Networking is configured between/through the physical machines on a single subnet. +* Installation and execution are both performed by root user. + + + +Step 1 Use apt-get to get the latest code +----------------------------------------- + +1. Setup Nova PPA with https://launchpad.net/~nova-core/+archive/ppa. + +:: + + sudo apt-get install python-software-properties + sudo add-apt-repository ppa:nova-core/ppa + +2. Run update. + +:: + + sudo apt-get update + +3. Install nova-pkgs (dependencies should be automatically installed). + +:: + + sudo apt-get install python-greenlet + sudo apt-get install nova-common nova-doc python-nova nova-api nova-network nova-objectstore nova-scheduler + +It is highly likely that there will be errors when the nova services come up since they are not yet configured. Don't worry, you're only at step 1! + +Step 2 Setup configuration files (installed in /etc/nova) +--------------------------------------------------------- + +Note: CC_ADDR= + +1. These need to be defined in EACH configuration file + +:: + + --sql_connection=mysql://root:nova@$CC_ADDR/nova # location of nova sql db + --s3_host=$CC_ADDR # This is where nova is hosting the objectstore service, which + # will contain the VM images and buckets + --rabbit_host=$CC_ADDR # This is where the rabbit AMQP messaging service is hosted + --cc_host=$CC_ADDR # This is where the the nova-api service lives + --verbose # Optional but very helpful during initial setup + --ec2_url=http://$CC_ADDR:8773/services/Cloud + --network_manager=nova.network.manager.FlatManager # simple, no-vlan networking type + + +2. nova-manage specific flags + +:: + + --FAKE_subdomain=ec2 # workaround for ec2/euca api + --fixed_range= # ip network to use for VM guests, ex 192.168.2.64/26 + --network_size=<# of addrs> # number of ip addrs to use for VM guests, ex 64 + + +3. nova-network specific flags + +:: + + --fixed_range= # ip network to use for VM guests, ex 192.168.2.64/26 + --network_size=<# of addrs> # number of ip addrs to use for VM guests, ex 64 + +4. nova-api specific flags + +:: + + --FAKE_subdomain=ec2 # workaround for ec2/euca api + +5. Create a nova group + +:: + + sudo addgroup nova + +6. nova-objectstore specific flags < no specific config needed > + +Config files should be have their owner set to root:nova, and mode set to 0640, since they contain your MySQL server's root password. + +:: + + cd /etc/nova + chown -R root:nova . + +Step 3 Setup the sql db +----------------------- + +1. First you 'preseed' (using vishy's :doc:`../quickstart`). Run this as root. + +:: + + sudo apt-get install bzr git-core + sudo bash + export MYSQL_PASS=nova + + +:: + + cat < + /usr/bin/python /usr/bin/nova-manage project create + /usr/bin/python /usr/bin/nova-manage project create network + +Note: The nova-manage service assumes that the first IP address is your network (like 192.168.0.0), that the 2nd IP is your gateway (192.168.0.1), and that the broadcast is the very last IP in the range you defined (192.168.0.255). If this is not the case you will need to manually edit the sql db 'networks' table.o. + +On running this command, entries are made in the 'networks' and 'fixed_ips' table. However, one of the networks listed in the 'networks' table needs to be marked as bridge in order for the code to know that a bridge exists. We ended up doing this manually, (update query fired directly in the DB). Is there a better way to mark a network as bridged? + +Update: This has been resolved w.e.f 27/10. network is marked as bridged automatically based on the type of n/w manager selected. + +More networking details to create a network bridge for flat network +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Nova defaults to a bridge device named 'br100'. This needs to be created and somehow integrated into YOUR network. In my case, I wanted to keep things as simple as possible and have all the vm guests on the same network as the vm hosts (the compute nodes). Thus, I set the compute node's external IP address to be on the bridge and added eth0 to that bridge. To do this, edit your network interfaces config to look like the following:: + + < begin /etc/network/interfaces > + # The loopback network interface + auto lo + iface lo inet loopback + + # Networking for NOVA + auto br100 + + iface br100 inet dhcp + bridge_ports eth0 + bridge_stp off + bridge_maxwait 0 + bridge_fd 0 + < end /etc/network/interfaces > + + +Next, restart networking to apply the changes:: + + sudo /etc/init.d/networking restart + +Step 5: Create nova certs. +-------------------------- + +Generate the certs as a zip file:: + + mkdir creds + sudo /usr/bin/python /usr/bin/nova-manage project zip admin admin creds/nova.zip + +you can get the rc file more easily with:: + + sudo /usr/bin/python /usr/bin/nova-manage project env admin admin creds/novarc + +unzip them in your home directory, and add them to your environment:: + + unzip creds/nova.zip + echo ". creds/novarc" >> ~/.bashrc + ~/.bashrc + + +Step 6 Restart all relevant services +------------------------------------ + +Restart Libvirt:: + + sudo /etc/init.d/libvirt-bin restart + +Restart relevant nova services:: + + sudo /etc/init.d/nova-compute restart + sudo /etc/init.d/nova-volume restart + + +.. todo:: do we still need the content below? + +Bare-metal Provisioning +----------------------- + +To install the base operating system you can use PXE booting. + +Types of Hosts +-------------- + +A single machine in your cluster can act as one or more of the following types +of host: + +Nova Services + +* Network +* Compute +* Volume +* API +* Objectstore + +Other supporting services + +* Message Queue +* Database (optional) +* Authentication database (optional) + +Initial Setup +------------- + +* Networking +* Cloudadmin User Creation + +Deployment Technologies +----------------------- + +Once you have machines with a base operating system installation, you can deploy +code and configuration with your favorite tools to specify which machines in +your cluster have which roles: + +* Puppet +* Chef diff --git a/doc/build/html/_sources/adminguide/network.flat.txt b/doc/build/html/_sources/adminguide/network.flat.txt new file mode 100644 index 000000000000..1b8661a40382 --- /dev/null +++ b/doc/build/html/_sources/adminguide/network.flat.txt @@ -0,0 +1,60 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + + +Flat Network Mode (Original and Flat) +===================================== + +Flat network mode removes most of the complexity of VLAN mode by simply +bridging all instance interfaces onto a single network. + +There are two variations of flat mode that differ mostly in how IP addresses +are given to instances. + + +Original Flat Mode +------------------ +IP addresses for VM instances are grabbed from a subnet specified by the network administrator, and injected into the image on launch. All instances of the system are attached to the same Linux networking bridge, configured manually by the network administrator both on the network controller hosting the network and on the computer controllers hosting the instances. To recap: + +* Each compute host creates a single bridge for all instances to use to attach to the external network. +* The networking configuration is injected into the instance before it is booted or it is obtained by a guest agent installed in the instance. + +Note that the configuration injection currently only works on linux-style systems that keep networking +configuration in /etc/network/interfaces. + + +Flat DHCP Mode +-------------- +IP addresses for VM instances are grabbed from a subnet specified by the network administrator. Similar to the flat network, a single Linux networking bridge is created and configured manually by the network administrator and used for all instances. A DHCP server is started to pass out IP addresses to VM instances from the specified subnet. To recap: + +* Like flat mode, all instances are attached to a single bridge on the compute node. +* In addition a DHCP server is running to configure instances. + +Implementation +-------------- + +The network nodes do not act as a default gateway in flat mode. Instances +are given public IP addresses. + +Compute nodes have iptables/ebtables entries created per project and +instance to protect against IP/MAC address spoofing and ARP poisoning. + + +Examples +-------- + +.. todo:: add flat network mode configuration examples diff --git a/doc/build/html/_sources/adminguide/network.vlan.txt b/doc/build/html/_sources/adminguide/network.vlan.txt new file mode 100644 index 000000000000..a7cccc098762 --- /dev/null +++ b/doc/build/html/_sources/adminguide/network.vlan.txt @@ -0,0 +1,179 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + + +VLAN Network Mode +================= +VLAN Network Mode is the default mode for Nova. It provides a private network +segment for each project's instances that can be accessed via a dedicated +VPN connection from the Internet. + +In this mode, each project gets its own VLAN, Linux networking bridge, and subnet. The subnets are specified by the network administrator, and are assigned dynamically to a project when required. A DHCP Server is started for each VLAN to pass out IP addresses to VM instances from the subnet assigned to the project. All instances belonging to one project are bridged into the same VLAN for that project. The Linux networking bridges and VLANs are created by Nova when required, described in more detail in Nova VLAN Network Management Implementation. + +.. + (this text revised above) + Because the flat network and flat DhCP network are simple to understand and yet do not scale well enough for real-world cloud systems, this section focuses on the VLAN network implementation by the VLAN Network Manager. + + + In the VLAN network mode, all the VM instances of a project are connected together in a VLAN with the specified private subnet. Each running VM instance is assigned an IP address within the given private subnet. + +.. todo:: Insert Figure 2 from "An OpenStack Network Overview" contributed by Citrix + +While network traffic between VM instances belonging to the same VLAN is always open, Nova can enforce isolation of network traffic between different projects by enforcing one VLAN per project. + +In addition, the network administrator can specify a pool of public IP addresses that users may allocate and then assign to VMs, either at boot or dynamically at run-time. This capability is similar to Amazon's 'elastic IPs'. A public IP address may be associated with a running instances, allowing the VM instance to be accessed from the public network. The public IP addresses are accessible from the network host and NATed to the private IP address of the project. + +.. todo:: Describe how a public IP address could be associated with a project (a VLAN) + +This is the default networking mode and supports the most features. For multiple machine installation, it requires a switch that supports host-managed vlan tagging. In this mode, nova will create a vlan and bridge for each project. The project gets a range of private ips that are only accessible from inside the vlan. In order for a user to access the instances in their project, a special vpn instance (code named :ref:`cloudpipe `) needs to be created. Nova generates a certificate and key for the user to access the vpn and starts the vpn automatically. More information on cloudpipe can be found :ref:`here `. + +The following diagram illustrates how the communication that occurs between the vlan (the dashed box) and the public internet (represented by the two clouds) + +.. image:: /images/cloudpipe.png + :width: 100% + +Goals +----- + +* each project is in a protected network segment + + * RFC-1918 IP space + * public IP via NAT + * no default inbound Internet access without public NAT + * limited (project-admin controllable) outbound Internet access + * limited (project-admin controllable) access to other project segments + * all connectivity to instance and cloud API is via VPN into the project segment + +* common DMZ segment for support services (only visible from project segment) + + * metadata + * dashboard + + +Limitations +----------- + +* Projects / cluster limited to available VLANs in switching infrastructure +* Requires VPN for access to project segment + + +Implementation +-------------- +Currently Nova segregates project VLANs using 802.1q VLAN tagging in the +switching layer. Compute hosts create VLAN-specific interfaces and bridges +as required. + +The network nodes act as default gateway for project networks and contain +all of the routing and firewall rules implementing security groups. The +network node also handles DHCP to provide instance IPs for each project. + +VPN access is provided by running a small instance called CloudPipe +on the IP immediately following the gateway IP for each project. The +network node maps a dedicated public IP/port to the CloudPipe instance. + +Compute nodes have per-VLAN interfaces and bridges created as required. +These do NOT have IP addresses in the host to protect host access. +Compute nodes have iptables/ebtables entries created per project and +instance to protect against IP/MAC address spoofing and ARP poisoning. + +The network assignment to a project, and IP address assignment to a VM instance, are triggered when a user starts to run a VM instance. When running a VM instance, a user needs to specify a project for the instances, and the security groups (described in Security Groups) when the instance wants to join. If this is the first instance to be created for the project, then Nova (the cloud controller) needs to find a network controller to be the network host for the project; it then sets up a private network by finding an unused VLAN id, an unused subnet, and then the controller assigns them to the project, it also assigns a name to the project's Linux bridge, and allocating a private IP within the project's subnet for the new instance. + +If the instance the user wants to start is not the project's first, a subnet and a VLAN must have already been assigned to the project; therefore the system needs only to find an available IP address within the subnet and assign it to the new starting instance. If there is no private IP available within the subnet, an exception will be raised to the cloud controller, and the VM creation cannot proceed. + +.. todo:: insert the name of the Linux bridge, is it always named bridge? + +External Infrastructure +----------------------- + +Nova assumes the following is available: + +* DNS +* NTP +* Internet connectivity + + +Example +------- + +This example network configuration demonstrates most of the capabilities +of VLAN Mode. It splits administrative access to the nodes onto a dedicated +management network and uses dedicated network nodes to handle all +routing and gateway functions. + +It uses a 10GB network for instance traffic and a 1GB network for management. + + +Hardware +~~~~~~~~ + +* All nodes have a minimum of two NICs for management and production. + + * management is 1GB + * production is 10GB + * add additional NICs for bonding or HA/performance + +* network nodes should have an additional NIC dedicated to public Internet traffic +* switch needs to support enough simultaneous VLANs for number of projects +* production network configured as 802.1q trunk on switch + + +Operation +~~~~~~~~~ + +The network node controls the project network configuration: + +* assigns each project a VLAN and private IP range +* starts dnsmasq on project VLAN to serve private IP range +* configures iptables on network node for default project access +* launches CloudPipe instance and configures iptables access + +When starting an instance the network node: + +* sets up a VLAN interface and bridge on each host as required when an + instance is started on that host +* assigns private IP to instance +* generates MAC address for instance +* update dnsmasq with IP/MAC for instance + +When starting an instance the compute node: + +* sets up a VLAN interface and bridge on each host as required when an + instance is started on that host + + +Setup +~~~~~ + +* Assign VLANs in the switch: + + * public Internet segment + * production network + * management network + * cluster DMZ + +* Assign a contiguous range of VLANs to Nova for project use. +* Configure management NIC ports as management VLAN access ports. +* Configure management VLAN with Internet access as required +* Configure production NIC ports as 802.1q trunk ports. +* Configure Nova (need to add specifics here) + + * public IPs + * instance IPs + * project network size + * DMZ network + +.. todo:: need specific Nova configuration added diff --git a/doc/build/html/_sources/adminguide/nova.manage.txt b/doc/build/html/_sources/adminguide/nova.manage.txt new file mode 100644 index 000000000000..89fb396691e6 --- /dev/null +++ b/doc/build/html/_sources/adminguide/nova.manage.txt @@ -0,0 +1,116 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + + +The nova-manage command +======================= + +Introduction +~~~~~~~~~~~~ + +The nova-manage command is used to perform many essential functions for +administration and ongoing maintenance of nova, such as user creation, +vpn management, and much more. + +The standard pattern for executing a nova-manage command is: + +``nova-manage []`` + +For example, to obtain a list of all projects: + +``nova-manage project list`` + +You can run without arguments to see a list of available command categories: + +``nova-manage`` + +You can run with a category argument to see a list of all commands in that +category: + +``nova-manage user`` + + +Nova Shell +~~~~~~~~~~ + +* shell bpython + * start a new bpython shell +* shell ipython + * start a new ipython shell +* shell python + * start a new python shell +* shell run + * ??? +* shell script: Runs the script from the specifed path with flags set properly. + * arguments: path + + +Concept: Flags +-------------- + +python-gflags + + +Concept: Plugins +---------------- + +* Managers/Drivers: utils.import_object from string flag +* virt/connections: conditional loading from string flag +* db: LazyPluggable via string flag +* auth_manager: utils.import_class based on string flag +* Volumes: moving to pluggable driver instead of manager +* Network: pluggable managers +* Compute: same driver used, but pluggable at connection + + +Concept: IPC/RPC +---------------- + +Rabbit! + + +Concept: Fakes +-------------- + +* auth +* ldap + + +Concept: Scheduler +------------------ + +* simple +* random + + +Concept: Security Groups +------------------------ + +Security groups + + +Concept: Certificate Authority +------------------------------ + +Nova does a small amount of certificate management. These certificates are used for :ref:`project vpns <../cloudpipe>` and decrypting bundled images. + + +Concept: Images +--------------- + +* launching +* bundling diff --git a/doc/build/html/_sources/adminguide/single.node.install.txt b/doc/build/html/_sources/adminguide/single.node.install.txt new file mode 100644 index 000000000000..27597962aae6 --- /dev/null +++ b/doc/build/html/_sources/adminguide/single.node.install.txt @@ -0,0 +1,344 @@ +Installing Nova on a Single Host +================================ + +Nova can be run on a single machine, and it is recommended that new users practice managing this type of installation before graduating to multi node systems. + +The fastest way to get a test cloud running is through our :doc:`../quickstart`. But for more detail on installing the system read this doc. + + +Step 1 and 2: Get the latest Nova code system software +------------------------------------------------------ + +Depending on your system, the mehod for accomplishing this varies + +.. toctree:: + :maxdepth: 1 + + distros/ubuntu.10.04 + distros/ubuntu.10.10 + distros/others + + +Step 3: Build and install Nova services +--------------------------------------- + +Switch to the base nova source directory. + +Then type or copy/paste in the following line to compile the Python code for OpenStack Compute. + +:: + + sudo python setup.py build + sudo python setup.py install + + +When the installation is complete, you'll see the following lines: + +:: + + Installing nova-network script to /usr/local/bin + Installing nova-volume script to /usr/local/bin + Installing nova-objectstore script to /usr/local/bin + Installing nova-manage script to /usr/local/bin + Installing nova-scheduler script to /usr/local/bin + Installing nova-dhcpbridge script to /usr/local/bin + Installing nova-compute script to /usr/local/bin + Installing nova-instancemonitor script to /usr/local/bin + Installing nova-api script to /usr/local/bin + Installing nova-import-canonical-imagestore script to /usr/local/bin + + Installed /usr/local/lib/python2.6/dist-packages/nova-2010.1-py2.6.egg + Processing dependencies for nova==2010.1 + Finished processing dependencies for nova==2010.1 + + +Step 4: Create a Nova administrator +----------------------------------- +Type or copy/paste in the following line to create a user named "anne.":: + + sudo nova-manage user admin anne + +You see an access key and a secret key export, such as these made-up ones::: + + export EC2_ACCESS_KEY=4e6498a2-blah-blah-blah-17d1333t97fd + export EC2_SECRET_KEY=0a520304-blah-blah-blah-340sp34k05bbe9a7 + + +Step 5: Create a project with the user you created +-------------------------------------------------- +Type or copy/paste in the following line to create a project named IRT (for Ice Road Truckers, of course) with the newly-created user named anne. + +:: + + sudo nova-manage project create IRT anne + +:: + + Generating RSA private key, 1024 bit long modulus + .....++++++ + ..++++++ + e is 65537 (0x10001) + Using configuration from ./openssl.cnf + Check that the request matches the signature + Signature ok + The Subject's Distinguished Name is as follows + countryName :PRINTABLE:'US' + stateOrProvinceName :PRINTABLE:'California' + localityName :PRINTABLE:'MountainView' + organizationName :PRINTABLE:'AnsoLabs' + organizationalUnitName:PRINTABLE:'NovaDev' + commonName :PRINTABLE:'anne-2010-10-12T21:12:35Z' + Certificate is to be certified until Oct 12 21:12:35 2011 GMT (365 days) + + Write out database with 1 new entries + Data Base Updated + + +Step 6: Unzip the nova.zip +-------------------------- + +You should have a nova.zip file in your current working directory. Unzip it with this command: + +:: + + unzip nova.zip + + +You'll see these files extract. + +:: + + Archive: nova.zip + extracting: novarc + extracting: pk.pem + extracting: cert.pem + extracting: nova-vpn.conf + extracting: cacert.pem + + +Step 7: Source the rc file +-------------------------- +Type or copy/paste the following to source the novarc file in your current working directory. + +:: + + . novarc + + +Step 8: Pat yourself on the back :) +----------------------------------- +Congratulations, your cloud is up and running, you’ve created an admin user, retrieved the user's credentials and put them in your environment. + +Now you need an image. + + +Step 9: Get an image +-------------------- +To make things easier, we've provided a small image on the Rackspace CDN. Use this command to get it on your server. + +:: + + wget http://c2477062.cdn.cloudfiles.rackspacecloud.com/images.tgz + + +:: + + --2010-10-12 21:40:55-- http://c2477062.cdn.cloudfiles.rackspacecloud.com/images.tgz + Resolving cblah2.cdn.cloudfiles.rackspacecloud.com... 208.111.196.6, 208.111.196.7 + Connecting to cblah2.cdn.cloudfiles.rackspacecloud.com|208.111.196.6|:80... connected. + HTTP request sent, awaiting response... 200 OK + Length: 58520278 (56M) [appication/x-gzip] + Saving to: `images.tgz' + + 100%[======================================>] 58,520,278 14.1M/s in 3.9s + + 2010-10-12 21:40:59 (14.1 MB/s) - `images.tgz' saved [58520278/58520278] + + + +Step 10: Decompress the image file +---------------------------------- +Use this command to extract the image files::: + + tar xvzf images.tgz + +You get a directory listing like so::: + + images + |-- aki-lucid + | |-- image + | `-- info.json + |-- ami-tiny + | |-- image + | `-- info.json + `-- ari-lucid + |-- image + `-- info.json + +Step 11: Send commands to upload sample image to the cloud +---------------------------------------------------------- + +Type or copy/paste the following commands to create a manifest for the kernel.:: + + euca-bundle-image -i images/aki-lucid/image -p kernel --kernel true + +You should see this in response::: + + Checking image + Tarring image + Encrypting image + Splitting image... + Part: kernel.part.0 + Generating manifest /tmp/kernel.manifest.xml + +Type or copy/paste the following commands to create a manifest for the ramdisk.:: + + euca-bundle-image -i images/ari-lucid/image -p ramdisk --ramdisk true + +You should see this in response::: + + Checking image + Tarring image + Encrypting image + Splitting image... + Part: ramdisk.part.0 + Generating manifest /tmp/ramdisk.manifest.xml + +Type or copy/paste the following commands to upload the kernel bundle.:: + + euca-upload-bundle -m /tmp/kernel.manifest.xml -b mybucket + +You should see this in response::: + + Checking bucket: mybucket + Creating bucket: mybucket + Uploading manifest file + Uploading part: kernel.part.0 + Uploaded image as mybucket/kernel.manifest.xml + +Type or copy/paste the following commands to upload the ramdisk bundle.:: + + euca-upload-bundle -m /tmp/ramdisk.manifest.xml -b mybucket + +You should see this in response::: + + Checking bucket: mybucket + Uploading manifest file + Uploading part: ramdisk.part.0 + Uploaded image as mybucket/ramdisk.manifest.xml + +Type or copy/paste the following commands to register the kernel and get its ID.:: + + euca-register mybucket/kernel.manifest.xml + +You should see this in response::: + + IMAGE ami-fcbj2non + +Type or copy/paste the following commands to register the ramdisk and get its ID.:: + + euca-register mybucket/ramdisk.manifest.xml + +You should see this in response::: + + IMAGE ami-orukptrc + +Type or copy/paste the following commands to create a manifest for the machine image associated with the ramdisk and kernel IDs that you got from the previous commands.:: + + euca-bundle-image -i images/ami-tiny/image -p machine --kernel ami-fcbj2non --ramdisk ami-orukptrc + +You should see this in response::: + + Checking image + Tarring image + Encrypting image + Splitting image... + Part: machine.part.0 + Part: machine.part.1 + Part: machine.part.2 + Part: machine.part.3 + Part: machine.part.4 + Generating manifest /tmp/machine.manifest.xml + +Type or copy/paste the following commands to upload the machine image bundle.:: + + euca-upload-bundle -m /tmp/machine.manifest.xml -b mybucket + +You should see this in response::: + + Checking bucket: mybucket + Uploading manifest file + Uploading part: machine.part.0 + Uploading part: machine.part.1 + Uploading part: machine.part.2 + Uploading part: machine.part.3 + Uploading part: machine.part.4 + Uploaded image as mybucket/machine.manifest.xml + +Type or copy/paste the following commands to register the machine image and get its ID.:: + + euca-register mybucket/machine.manifest.xml + +You should see this in response::: + + IMAGE ami-g06qbntt + +Type or copy/paste the following commands to register a SSH keypair for use in starting and accessing the instances.:: + + euca-add-keypair mykey > mykey.priv + chmod 600 mykey.priv + +Type or copy/paste the following commands to run an instance using the keypair and IDs that we previously created.:: + + euca-run-instances ami-g06qbntt --kernel ami-fcbj2non --ramdisk ami-orukptrc -k mykey + +You should see this in response::: + + RESERVATION r-0at28z12 IRT + INSTANCE i-1b0bh8n ami-g06qbntt 10.0.0.3 10.0.0.3 scheduling mykey (IRT, None) m1.small 2010-10-18 19:02:10.443599 + +Type or copy/paste the following commands to watch as the scheduler launches, and completes booting your instance.:: + + euca-describe-instances + +You should see this in response::: + + RESERVATION r-0at28z12 IRT + INSTANCE i-1b0bh8n ami-g06qbntt 10.0.0.3 10.0.0.3 launching mykey (IRT, cloud02) m1.small 2010-10-18 19:02:10.443599 + +Type or copy/paste the following commands to see when loading is completed and the instance is running.:: + + euca-describe-instances + +You should see this in response::: + + RESERVATION r-0at28z12 IRT + INSTANCE i-1b0bh8n ami-g06qbntt 10.0.0.3 10.0.0.3 running mykey (IRT, cloud02) 0 m1.small 2010-10-18 19:02:10.443599 + +Type or copy/paste the following commands to check that the virtual machine is running.:: + + virsh list + +You should see this in response::: + + Id Name State + ---------------------------------- + 1 2842445831 running + +Type or copy/paste the following commands to ssh to the instance using your private key.:: + + ssh -i mykey.priv root@10.0.0.3 + + +Troubleshooting Installation +---------------------------- + +If you see an "error loading the config file './openssl.cnf'" it means you can copy the openssl.cnf file to the location where Nova expects it and reboot, then try the command again. + +:: + + cp /etc/ssl/openssl.cnf ~ + sudo reboot + + + diff --git a/doc/build/html/_sources/api/autoindex.txt b/doc/build/html/_sources/api/autoindex.txt new file mode 100644 index 000000000000..6265b082be52 --- /dev/null +++ b/doc/build/html/_sources/api/autoindex.txt @@ -0,0 +1,99 @@ +.. toctree:: + :maxdepth: 1 + + nova..adminclient.rst + nova..api.cloud.rst + nova..api.ec2.admin.rst + nova..api.ec2.apirequest.rst + nova..api.ec2.cloud.rst + nova..api.ec2.images.rst + nova..api.ec2.metadatarequesthandler.rst + nova..api.openstack.auth.rst + nova..api.openstack.backup_schedules.rst + nova..api.openstack.faults.rst + nova..api.openstack.flavors.rst + nova..api.openstack.images.rst + nova..api.openstack.servers.rst + nova..api.openstack.sharedipgroups.rst + nova..auth.dbdriver.rst + nova..auth.fakeldap.rst + nova..auth.ldapdriver.rst + nova..auth.manager.rst + nova..auth.signer.rst + nova..cloudpipe.pipelib.rst + nova..compute.disk.rst + nova..compute.instance_types.rst + nova..compute.manager.rst + nova..compute.monitor.rst + nova..compute.power_state.rst + nova..context.rst + nova..crypto.rst + nova..db.api.rst + nova..db.sqlalchemy.api.rst + nova..db.sqlalchemy.models.rst + nova..db.sqlalchemy.session.rst + nova..exception.rst + nova..fakerabbit.rst + nova..flags.rst + nova..image.service.rst + nova..manager.rst + nova..network.linux_net.rst + nova..network.manager.rst + nova..objectstore.bucket.rst + nova..objectstore.handler.rst + nova..objectstore.image.rst + nova..objectstore.stored.rst + nova..process.rst + nova..quota.rst + nova..rpc.rst + nova..scheduler.chance.rst + nova..scheduler.driver.rst + nova..scheduler.manager.rst + nova..scheduler.simple.rst + nova..server.rst + nova..service.rst + nova..test.rst + nova..tests.access_unittest.rst + nova..tests.api.fakes.rst + nova..tests.api.openstack.fakes.rst + nova..tests.api.openstack.test_api.rst + nova..tests.api.openstack.test_auth.rst + nova..tests.api.openstack.test_faults.rst + nova..tests.api.openstack.test_flavors.rst + nova..tests.api.openstack.test_images.rst + nova..tests.api.openstack.test_ratelimiting.rst + nova..tests.api.openstack.test_servers.rst + nova..tests.api.openstack.test_sharedipgroups.rst + nova..tests.api.test_wsgi.rst + nova..tests.api_integration.rst + nova..tests.api_unittest.rst + nova..tests.auth_unittest.rst + nova..tests.cloud_unittest.rst + nova..tests.compute_unittest.rst + nova..tests.declare_flags.rst + nova..tests.fake_flags.rst + nova..tests.flags_unittest.rst + nova..tests.network_unittest.rst + nova..tests.objectstore_unittest.rst + nova..tests.process_unittest.rst + nova..tests.quota_unittest.rst + nova..tests.real_flags.rst + nova..tests.rpc_unittest.rst + nova..tests.runtime_flags.rst + nova..tests.scheduler_unittest.rst + nova..tests.service_unittest.rst + nova..tests.twistd_unittest.rst + nova..tests.validator_unittest.rst + nova..tests.virt_unittest.rst + nova..tests.volume_unittest.rst + nova..twistd.rst + nova..utils.rst + nova..validate.rst + nova..virt.connection.rst + nova..virt.fake.rst + nova..virt.images.rst + nova..virt.libvirt_conn.rst + nova..virt.xenapi.rst + nova..volume.driver.rst + nova..volume.manager.rst + nova..wsgi.rst diff --git a/doc/build/html/_sources/api/nova..adminclient.txt b/doc/build/html/_sources/api/nova..adminclient.txt new file mode 100644 index 000000000000..35fa839e1b1b --- /dev/null +++ b/doc/build/html/_sources/api/nova..adminclient.txt @@ -0,0 +1,6 @@ +The :mod:`nova..adminclient` Module +============================================================================== +.. automodule:: nova..adminclient + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.cloud.txt b/doc/build/html/_sources/api/nova..api.cloud.txt new file mode 100644 index 000000000000..4138401858ea --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.cloud.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.cloud` Module +============================================================================== +.. automodule:: nova..api.cloud + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.ec2.admin.txt b/doc/build/html/_sources/api/nova..api.ec2.admin.txt new file mode 100644 index 000000000000..4e9ab308b4dd --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.ec2.admin.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.ec2.admin` Module +============================================================================== +.. automodule:: nova..api.ec2.admin + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.ec2.apirequest.txt b/doc/build/html/_sources/api/nova..api.ec2.apirequest.txt new file mode 100644 index 000000000000..c17a2ff3ad29 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.ec2.apirequest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.ec2.apirequest` Module +============================================================================== +.. automodule:: nova..api.ec2.apirequest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.ec2.cloud.txt b/doc/build/html/_sources/api/nova..api.ec2.cloud.txt new file mode 100644 index 000000000000..f6145c217f8c --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.ec2.cloud.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.ec2.cloud` Module +============================================================================== +.. automodule:: nova..api.ec2.cloud + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.ec2.images.txt b/doc/build/html/_sources/api/nova..api.ec2.images.txt new file mode 100644 index 000000000000..012d800e47fb --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.ec2.images.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.ec2.images` Module +============================================================================== +.. automodule:: nova..api.ec2.images + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.ec2.metadatarequesthandler.txt b/doc/build/html/_sources/api/nova..api.ec2.metadatarequesthandler.txt new file mode 100644 index 000000000000..75f5169e5f27 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.ec2.metadatarequesthandler.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.ec2.metadatarequesthandler` Module +============================================================================== +.. automodule:: nova..api.ec2.metadatarequesthandler + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.auth.txt b/doc/build/html/_sources/api/nova..api.openstack.auth.txt new file mode 100644 index 000000000000..8c3f8f2da626 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.auth.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.auth` Module +============================================================================== +.. automodule:: nova..api.openstack.auth + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.backup_schedules.txt b/doc/build/html/_sources/api/nova..api.openstack.backup_schedules.txt new file mode 100644 index 000000000000..6b406f12db4b --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.backup_schedules.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.backup_schedules` Module +============================================================================== +.. automodule:: nova..api.openstack.backup_schedules + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.faults.txt b/doc/build/html/_sources/api/nova..api.openstack.faults.txt new file mode 100644 index 000000000000..7b25561f74b7 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.faults.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.faults` Module +============================================================================== +.. automodule:: nova..api.openstack.faults + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.flavors.txt b/doc/build/html/_sources/api/nova..api.openstack.flavors.txt new file mode 100644 index 000000000000..0deb724deba1 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.flavors.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.flavors` Module +============================================================================== +.. automodule:: nova..api.openstack.flavors + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.images.txt b/doc/build/html/_sources/api/nova..api.openstack.images.txt new file mode 100644 index 000000000000..82bd5f1e86a3 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.images.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.images` Module +============================================================================== +.. automodule:: nova..api.openstack.images + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.servers.txt b/doc/build/html/_sources/api/nova..api.openstack.servers.txt new file mode 100644 index 000000000000..c36856ea2bc5 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.servers.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.servers` Module +============================================================================== +.. automodule:: nova..api.openstack.servers + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..api.openstack.sharedipgroups.txt b/doc/build/html/_sources/api/nova..api.openstack.sharedipgroups.txt new file mode 100644 index 000000000000..07632acc8e49 --- /dev/null +++ b/doc/build/html/_sources/api/nova..api.openstack.sharedipgroups.txt @@ -0,0 +1,6 @@ +The :mod:`nova..api.openstack.sharedipgroups` Module +============================================================================== +.. automodule:: nova..api.openstack.sharedipgroups + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..auth.dbdriver.txt b/doc/build/html/_sources/api/nova..auth.dbdriver.txt new file mode 100644 index 000000000000..7de68b6e08bc --- /dev/null +++ b/doc/build/html/_sources/api/nova..auth.dbdriver.txt @@ -0,0 +1,6 @@ +The :mod:`nova..auth.dbdriver` Module +============================================================================== +.. automodule:: nova..auth.dbdriver + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..auth.fakeldap.txt b/doc/build/html/_sources/api/nova..auth.fakeldap.txt new file mode 100644 index 000000000000..ca8a3ad4d560 --- /dev/null +++ b/doc/build/html/_sources/api/nova..auth.fakeldap.txt @@ -0,0 +1,6 @@ +The :mod:`nova..auth.fakeldap` Module +============================================================================== +.. automodule:: nova..auth.fakeldap + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..auth.ldapdriver.txt b/doc/build/html/_sources/api/nova..auth.ldapdriver.txt new file mode 100644 index 000000000000..c444635228f8 --- /dev/null +++ b/doc/build/html/_sources/api/nova..auth.ldapdriver.txt @@ -0,0 +1,6 @@ +The :mod:`nova..auth.ldapdriver` Module +============================================================================== +.. automodule:: nova..auth.ldapdriver + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..auth.manager.txt b/doc/build/html/_sources/api/nova..auth.manager.txt new file mode 100644 index 000000000000..bc5ce2ec31e8 --- /dev/null +++ b/doc/build/html/_sources/api/nova..auth.manager.txt @@ -0,0 +1,6 @@ +The :mod:`nova..auth.manager` Module +============================================================================== +.. automodule:: nova..auth.manager + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..auth.signer.txt b/doc/build/html/_sources/api/nova..auth.signer.txt new file mode 100644 index 000000000000..aad824eada39 --- /dev/null +++ b/doc/build/html/_sources/api/nova..auth.signer.txt @@ -0,0 +1,6 @@ +The :mod:`nova..auth.signer` Module +============================================================================== +.. automodule:: nova..auth.signer + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..cloudpipe.pipelib.txt b/doc/build/html/_sources/api/nova..cloudpipe.pipelib.txt new file mode 100644 index 000000000000..054aaf484fe2 --- /dev/null +++ b/doc/build/html/_sources/api/nova..cloudpipe.pipelib.txt @@ -0,0 +1,6 @@ +The :mod:`nova..cloudpipe.pipelib` Module +============================================================================== +.. automodule:: nova..cloudpipe.pipelib + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..compute.disk.txt b/doc/build/html/_sources/api/nova..compute.disk.txt new file mode 100644 index 000000000000..6410af6f3899 --- /dev/null +++ b/doc/build/html/_sources/api/nova..compute.disk.txt @@ -0,0 +1,6 @@ +The :mod:`nova..compute.disk` Module +============================================================================== +.. automodule:: nova..compute.disk + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..compute.instance_types.txt b/doc/build/html/_sources/api/nova..compute.instance_types.txt new file mode 100644 index 000000000000..d206ff3a4a1f --- /dev/null +++ b/doc/build/html/_sources/api/nova..compute.instance_types.txt @@ -0,0 +1,6 @@ +The :mod:`nova..compute.instance_types` Module +============================================================================== +.. automodule:: nova..compute.instance_types + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..compute.manager.txt b/doc/build/html/_sources/api/nova..compute.manager.txt new file mode 100644 index 000000000000..33a337c39843 --- /dev/null +++ b/doc/build/html/_sources/api/nova..compute.manager.txt @@ -0,0 +1,6 @@ +The :mod:`nova..compute.manager` Module +============================================================================== +.. automodule:: nova..compute.manager + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..compute.monitor.txt b/doc/build/html/_sources/api/nova..compute.monitor.txt new file mode 100644 index 000000000000..a91169ecd309 --- /dev/null +++ b/doc/build/html/_sources/api/nova..compute.monitor.txt @@ -0,0 +1,6 @@ +The :mod:`nova..compute.monitor` Module +============================================================================== +.. automodule:: nova..compute.monitor + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..compute.power_state.txt b/doc/build/html/_sources/api/nova..compute.power_state.txt new file mode 100644 index 000000000000..41b1080e5a0e --- /dev/null +++ b/doc/build/html/_sources/api/nova..compute.power_state.txt @@ -0,0 +1,6 @@ +The :mod:`nova..compute.power_state` Module +============================================================================== +.. automodule:: nova..compute.power_state + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..context.txt b/doc/build/html/_sources/api/nova..context.txt new file mode 100644 index 000000000000..9de1adb24827 --- /dev/null +++ b/doc/build/html/_sources/api/nova..context.txt @@ -0,0 +1,6 @@ +The :mod:`nova..context` Module +============================================================================== +.. automodule:: nova..context + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..crypto.txt b/doc/build/html/_sources/api/nova..crypto.txt new file mode 100644 index 000000000000..af9f636344ab --- /dev/null +++ b/doc/build/html/_sources/api/nova..crypto.txt @@ -0,0 +1,6 @@ +The :mod:`nova..crypto` Module +============================================================================== +.. automodule:: nova..crypto + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..db.api.txt b/doc/build/html/_sources/api/nova..db.api.txt new file mode 100644 index 000000000000..6d998fbb2f90 --- /dev/null +++ b/doc/build/html/_sources/api/nova..db.api.txt @@ -0,0 +1,6 @@ +The :mod:`nova..db.api` Module +============================================================================== +.. automodule:: nova..db.api + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..db.sqlalchemy.api.txt b/doc/build/html/_sources/api/nova..db.sqlalchemy.api.txt new file mode 100644 index 000000000000..76d0c1bd376f --- /dev/null +++ b/doc/build/html/_sources/api/nova..db.sqlalchemy.api.txt @@ -0,0 +1,6 @@ +The :mod:`nova..db.sqlalchemy.api` Module +============================================================================== +.. automodule:: nova..db.sqlalchemy.api + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..db.sqlalchemy.models.txt b/doc/build/html/_sources/api/nova..db.sqlalchemy.models.txt new file mode 100644 index 000000000000..9c795d7f51f5 --- /dev/null +++ b/doc/build/html/_sources/api/nova..db.sqlalchemy.models.txt @@ -0,0 +1,6 @@ +The :mod:`nova..db.sqlalchemy.models` Module +============================================================================== +.. automodule:: nova..db.sqlalchemy.models + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..db.sqlalchemy.session.txt b/doc/build/html/_sources/api/nova..db.sqlalchemy.session.txt new file mode 100644 index 000000000000..cbfd6416a888 --- /dev/null +++ b/doc/build/html/_sources/api/nova..db.sqlalchemy.session.txt @@ -0,0 +1,6 @@ +The :mod:`nova..db.sqlalchemy.session` Module +============================================================================== +.. automodule:: nova..db.sqlalchemy.session + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..exception.txt b/doc/build/html/_sources/api/nova..exception.txt new file mode 100644 index 000000000000..97ac6b752d27 --- /dev/null +++ b/doc/build/html/_sources/api/nova..exception.txt @@ -0,0 +1,6 @@ +The :mod:`nova..exception` Module +============================================================================== +.. automodule:: nova..exception + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..fakerabbit.txt b/doc/build/html/_sources/api/nova..fakerabbit.txt new file mode 100644 index 000000000000..f1e27c2664fb --- /dev/null +++ b/doc/build/html/_sources/api/nova..fakerabbit.txt @@ -0,0 +1,6 @@ +The :mod:`nova..fakerabbit` Module +============================================================================== +.. automodule:: nova..fakerabbit + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..flags.txt b/doc/build/html/_sources/api/nova..flags.txt new file mode 100644 index 000000000000..08165be44f46 --- /dev/null +++ b/doc/build/html/_sources/api/nova..flags.txt @@ -0,0 +1,6 @@ +The :mod:`nova..flags` Module +============================================================================== +.. automodule:: nova..flags + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..image.service.txt b/doc/build/html/_sources/api/nova..image.service.txt new file mode 100644 index 000000000000..78ef1eccadac --- /dev/null +++ b/doc/build/html/_sources/api/nova..image.service.txt @@ -0,0 +1,6 @@ +The :mod:`nova..image.service` Module +============================================================================== +.. automodule:: nova..image.service + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..manager.txt b/doc/build/html/_sources/api/nova..manager.txt new file mode 100644 index 000000000000..576902491c7e --- /dev/null +++ b/doc/build/html/_sources/api/nova..manager.txt @@ -0,0 +1,6 @@ +The :mod:`nova..manager` Module +============================================================================== +.. automodule:: nova..manager + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..network.linux_net.txt b/doc/build/html/_sources/api/nova..network.linux_net.txt new file mode 100644 index 000000000000..7af78d5ade7f --- /dev/null +++ b/doc/build/html/_sources/api/nova..network.linux_net.txt @@ -0,0 +1,6 @@ +The :mod:`nova..network.linux_net` Module +============================================================================== +.. automodule:: nova..network.linux_net + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..network.manager.txt b/doc/build/html/_sources/api/nova..network.manager.txt new file mode 100644 index 000000000000..0ea70553325e --- /dev/null +++ b/doc/build/html/_sources/api/nova..network.manager.txt @@ -0,0 +1,6 @@ +The :mod:`nova..network.manager` Module +============================================================================== +.. automodule:: nova..network.manager + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..objectstore.bucket.txt b/doc/build/html/_sources/api/nova..objectstore.bucket.txt new file mode 100644 index 000000000000..3bfdf639ccd4 --- /dev/null +++ b/doc/build/html/_sources/api/nova..objectstore.bucket.txt @@ -0,0 +1,6 @@ +The :mod:`nova..objectstore.bucket` Module +============================================================================== +.. automodule:: nova..objectstore.bucket + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..objectstore.handler.txt b/doc/build/html/_sources/api/nova..objectstore.handler.txt new file mode 100644 index 000000000000..0eb8c4efb497 --- /dev/null +++ b/doc/build/html/_sources/api/nova..objectstore.handler.txt @@ -0,0 +1,6 @@ +The :mod:`nova..objectstore.handler` Module +============================================================================== +.. automodule:: nova..objectstore.handler + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..objectstore.image.txt b/doc/build/html/_sources/api/nova..objectstore.image.txt new file mode 100644 index 000000000000..fa4c971f119a --- /dev/null +++ b/doc/build/html/_sources/api/nova..objectstore.image.txt @@ -0,0 +1,6 @@ +The :mod:`nova..objectstore.image` Module +============================================================================== +.. automodule:: nova..objectstore.image + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..objectstore.stored.txt b/doc/build/html/_sources/api/nova..objectstore.stored.txt new file mode 100644 index 000000000000..2b1d997a3fd0 --- /dev/null +++ b/doc/build/html/_sources/api/nova..objectstore.stored.txt @@ -0,0 +1,6 @@ +The :mod:`nova..objectstore.stored` Module +============================================================================== +.. automodule:: nova..objectstore.stored + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..process.txt b/doc/build/html/_sources/api/nova..process.txt new file mode 100644 index 000000000000..91eff8379070 --- /dev/null +++ b/doc/build/html/_sources/api/nova..process.txt @@ -0,0 +1,6 @@ +The :mod:`nova..process` Module +============================================================================== +.. automodule:: nova..process + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..quota.txt b/doc/build/html/_sources/api/nova..quota.txt new file mode 100644 index 000000000000..4140d95d66ac --- /dev/null +++ b/doc/build/html/_sources/api/nova..quota.txt @@ -0,0 +1,6 @@ +The :mod:`nova..quota` Module +============================================================================== +.. automodule:: nova..quota + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..rpc.txt b/doc/build/html/_sources/api/nova..rpc.txt new file mode 100644 index 000000000000..5b2a9b8e2333 --- /dev/null +++ b/doc/build/html/_sources/api/nova..rpc.txt @@ -0,0 +1,6 @@ +The :mod:`nova..rpc` Module +============================================================================== +.. automodule:: nova..rpc + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..scheduler.chance.txt b/doc/build/html/_sources/api/nova..scheduler.chance.txt new file mode 100644 index 000000000000..89c074c8f6c7 --- /dev/null +++ b/doc/build/html/_sources/api/nova..scheduler.chance.txt @@ -0,0 +1,6 @@ +The :mod:`nova..scheduler.chance` Module +============================================================================== +.. automodule:: nova..scheduler.chance + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..scheduler.driver.txt b/doc/build/html/_sources/api/nova..scheduler.driver.txt new file mode 100644 index 000000000000..793ed9c7b3ae --- /dev/null +++ b/doc/build/html/_sources/api/nova..scheduler.driver.txt @@ -0,0 +1,6 @@ +The :mod:`nova..scheduler.driver` Module +============================================================================== +.. automodule:: nova..scheduler.driver + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..scheduler.manager.txt b/doc/build/html/_sources/api/nova..scheduler.manager.txt new file mode 100644 index 000000000000..d0fc7c4230db --- /dev/null +++ b/doc/build/html/_sources/api/nova..scheduler.manager.txt @@ -0,0 +1,6 @@ +The :mod:`nova..scheduler.manager` Module +============================================================================== +.. automodule:: nova..scheduler.manager + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..scheduler.simple.txt b/doc/build/html/_sources/api/nova..scheduler.simple.txt new file mode 100644 index 000000000000..dacc2cf3088c --- /dev/null +++ b/doc/build/html/_sources/api/nova..scheduler.simple.txt @@ -0,0 +1,6 @@ +The :mod:`nova..scheduler.simple` Module +============================================================================== +.. automodule:: nova..scheduler.simple + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..server.txt b/doc/build/html/_sources/api/nova..server.txt new file mode 100644 index 000000000000..7cb2cfa5465d --- /dev/null +++ b/doc/build/html/_sources/api/nova..server.txt @@ -0,0 +1,6 @@ +The :mod:`nova..server` Module +============================================================================== +.. automodule:: nova..server + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..service.txt b/doc/build/html/_sources/api/nova..service.txt new file mode 100644 index 000000000000..2d2dfcf2e52a --- /dev/null +++ b/doc/build/html/_sources/api/nova..service.txt @@ -0,0 +1,6 @@ +The :mod:`nova..service` Module +============================================================================== +.. automodule:: nova..service + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..test.txt b/doc/build/html/_sources/api/nova..test.txt new file mode 100644 index 000000000000..a6bdb6f1fffa --- /dev/null +++ b/doc/build/html/_sources/api/nova..test.txt @@ -0,0 +1,6 @@ +The :mod:`nova..test` Module +============================================================================== +.. automodule:: nova..test + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.access_unittest.txt b/doc/build/html/_sources/api/nova..tests.access_unittest.txt new file mode 100644 index 000000000000..89554e430a4f --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.access_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.access_unittest` Module +============================================================================== +.. automodule:: nova..tests.access_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.fakes.txt b/doc/build/html/_sources/api/nova..tests.api.fakes.txt new file mode 100644 index 000000000000..5728b18f3616 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.fakes.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.fakes` Module +============================================================================== +.. automodule:: nova..tests.api.fakes + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.fakes.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.fakes.txt new file mode 100644 index 000000000000..4a9ff593899f --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.fakes.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.fakes` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.fakes + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_api.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_api.txt new file mode 100644 index 000000000000..68106d221f83 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_api.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_api` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_api + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_auth.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_auth.txt new file mode 100644 index 000000000000..9f0011669a88 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_auth.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_auth` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_auth + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_faults.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_faults.txt new file mode 100644 index 000000000000..b839ae8a3c77 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_faults.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_faults` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_faults + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_flavors.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_flavors.txt new file mode 100644 index 000000000000..471fac56ec84 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_flavors.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_flavors` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_flavors + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_images.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_images.txt new file mode 100644 index 000000000000..57ae93c8c63e --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_images.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_images` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_images + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_ratelimiting.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_ratelimiting.txt new file mode 100644 index 000000000000..9a857f795941 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_ratelimiting.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_ratelimiting` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_ratelimiting + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_servers.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_servers.txt new file mode 100644 index 000000000000..ea602e6ab16c --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_servers.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_servers` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_servers + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.openstack.test_sharedipgroups.txt b/doc/build/html/_sources/api/nova..tests.api.openstack.test_sharedipgroups.txt new file mode 100644 index 000000000000..1fad49147d62 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.openstack.test_sharedipgroups.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.openstack.test_sharedipgroups` Module +============================================================================== +.. automodule:: nova..tests.api.openstack.test_sharedipgroups + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api.test_wsgi.txt b/doc/build/html/_sources/api/nova..tests.api.test_wsgi.txt new file mode 100644 index 000000000000..8e79caa4dd73 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api.test_wsgi.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api.test_wsgi` Module +============================================================================== +.. automodule:: nova..tests.api.test_wsgi + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api_integration.txt b/doc/build/html/_sources/api/nova..tests.api_integration.txt new file mode 100644 index 000000000000..fd217acf73c0 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api_integration.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api_integration` Module +============================================================================== +.. automodule:: nova..tests.api_integration + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.api_unittest.txt b/doc/build/html/_sources/api/nova..tests.api_unittest.txt new file mode 100644 index 000000000000..44a65d48c463 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.api_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.api_unittest` Module +============================================================================== +.. automodule:: nova..tests.api_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.auth_unittest.txt b/doc/build/html/_sources/api/nova..tests.auth_unittest.txt new file mode 100644 index 000000000000..5805dcf38b8e --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.auth_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.auth_unittest` Module +============================================================================== +.. automodule:: nova..tests.auth_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.cloud_unittest.txt b/doc/build/html/_sources/api/nova..tests.cloud_unittest.txt new file mode 100644 index 000000000000..d2ca3b013579 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.cloud_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.cloud_unittest` Module +============================================================================== +.. automodule:: nova..tests.cloud_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.compute_unittest.txt b/doc/build/html/_sources/api/nova..tests.compute_unittest.txt new file mode 100644 index 000000000000..6a30bf7441f7 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.compute_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.compute_unittest` Module +============================================================================== +.. automodule:: nova..tests.compute_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.declare_flags.txt b/doc/build/html/_sources/api/nova..tests.declare_flags.txt new file mode 100644 index 000000000000..524e72e9133d --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.declare_flags.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.declare_flags` Module +============================================================================== +.. automodule:: nova..tests.declare_flags + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.fake_flags.txt b/doc/build/html/_sources/api/nova..tests.fake_flags.txt new file mode 100644 index 000000000000..a8dc3df36efe --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.fake_flags.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.fake_flags` Module +============================================================================== +.. automodule:: nova..tests.fake_flags + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.flags_unittest.txt b/doc/build/html/_sources/api/nova..tests.flags_unittest.txt new file mode 100644 index 000000000000..61087e683336 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.flags_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.flags_unittest` Module +============================================================================== +.. automodule:: nova..tests.flags_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.network_unittest.txt b/doc/build/html/_sources/api/nova..tests.network_unittest.txt new file mode 100644 index 000000000000..df057d813efb --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.network_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.network_unittest` Module +============================================================================== +.. automodule:: nova..tests.network_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.objectstore_unittest.txt b/doc/build/html/_sources/api/nova..tests.objectstore_unittest.txt new file mode 100644 index 000000000000..0ae252f049c7 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.objectstore_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.objectstore_unittest` Module +============================================================================== +.. automodule:: nova..tests.objectstore_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.process_unittest.txt b/doc/build/html/_sources/api/nova..tests.process_unittest.txt new file mode 100644 index 000000000000..30d1e129c942 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.process_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.process_unittest` Module +============================================================================== +.. automodule:: nova..tests.process_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.quota_unittest.txt b/doc/build/html/_sources/api/nova..tests.quota_unittest.txt new file mode 100644 index 000000000000..6ab81310489d --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.quota_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.quota_unittest` Module +============================================================================== +.. automodule:: nova..tests.quota_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.real_flags.txt b/doc/build/html/_sources/api/nova..tests.real_flags.txt new file mode 100644 index 000000000000..e9c0d1abdc66 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.real_flags.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.real_flags` Module +============================================================================== +.. automodule:: nova..tests.real_flags + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.rpc_unittest.txt b/doc/build/html/_sources/api/nova..tests.rpc_unittest.txt new file mode 100644 index 000000000000..e6c7ceb2e04a --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.rpc_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.rpc_unittest` Module +============================================================================== +.. automodule:: nova..tests.rpc_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.runtime_flags.txt b/doc/build/html/_sources/api/nova..tests.runtime_flags.txt new file mode 100644 index 000000000000..984e21199b4c --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.runtime_flags.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.runtime_flags` Module +============================================================================== +.. automodule:: nova..tests.runtime_flags + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.scheduler_unittest.txt b/doc/build/html/_sources/api/nova..tests.scheduler_unittest.txt new file mode 100644 index 000000000000..ae3a0661658d --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.scheduler_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.scheduler_unittest` Module +============================================================================== +.. automodule:: nova..tests.scheduler_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.service_unittest.txt b/doc/build/html/_sources/api/nova..tests.service_unittest.txt new file mode 100644 index 000000000000..c7c746d17e10 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.service_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.service_unittest` Module +============================================================================== +.. automodule:: nova..tests.service_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.twistd_unittest.txt b/doc/build/html/_sources/api/nova..tests.twistd_unittest.txt new file mode 100644 index 000000000000..ce88202e102a --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.twistd_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.twistd_unittest` Module +============================================================================== +.. automodule:: nova..tests.twistd_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.validator_unittest.txt b/doc/build/html/_sources/api/nova..tests.validator_unittest.txt new file mode 100644 index 000000000000..980284327f89 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.validator_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.validator_unittest` Module +============================================================================== +.. automodule:: nova..tests.validator_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.virt_unittest.txt b/doc/build/html/_sources/api/nova..tests.virt_unittest.txt new file mode 100644 index 000000000000..2189be41ef96 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.virt_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.virt_unittest` Module +============================================================================== +.. automodule:: nova..tests.virt_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..tests.volume_unittest.txt b/doc/build/html/_sources/api/nova..tests.volume_unittest.txt new file mode 100644 index 000000000000..791e192f5339 --- /dev/null +++ b/doc/build/html/_sources/api/nova..tests.volume_unittest.txt @@ -0,0 +1,6 @@ +The :mod:`nova..tests.volume_unittest` Module +============================================================================== +.. automodule:: nova..tests.volume_unittest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..twistd.txt b/doc/build/html/_sources/api/nova..twistd.txt new file mode 100644 index 000000000000..d4145396db02 --- /dev/null +++ b/doc/build/html/_sources/api/nova..twistd.txt @@ -0,0 +1,6 @@ +The :mod:`nova..twistd` Module +============================================================================== +.. automodule:: nova..twistd + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..utils.txt b/doc/build/html/_sources/api/nova..utils.txt new file mode 100644 index 000000000000..1131d1080942 --- /dev/null +++ b/doc/build/html/_sources/api/nova..utils.txt @@ -0,0 +1,6 @@ +The :mod:`nova..utils` Module +============================================================================== +.. automodule:: nova..utils + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..validate.txt b/doc/build/html/_sources/api/nova..validate.txt new file mode 100644 index 000000000000..1d142f103259 --- /dev/null +++ b/doc/build/html/_sources/api/nova..validate.txt @@ -0,0 +1,6 @@ +The :mod:`nova..validate` Module +============================================================================== +.. automodule:: nova..validate + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..virt.connection.txt b/doc/build/html/_sources/api/nova..virt.connection.txt new file mode 100644 index 000000000000..caf76676514e --- /dev/null +++ b/doc/build/html/_sources/api/nova..virt.connection.txt @@ -0,0 +1,6 @@ +The :mod:`nova..virt.connection` Module +============================================================================== +.. automodule:: nova..virt.connection + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..virt.fake.txt b/doc/build/html/_sources/api/nova..virt.fake.txt new file mode 100644 index 000000000000..06ecdbf7d688 --- /dev/null +++ b/doc/build/html/_sources/api/nova..virt.fake.txt @@ -0,0 +1,6 @@ +The :mod:`nova..virt.fake` Module +============================================================================== +.. automodule:: nova..virt.fake + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..virt.images.txt b/doc/build/html/_sources/api/nova..virt.images.txt new file mode 100644 index 000000000000..4fdeb7af8dc7 --- /dev/null +++ b/doc/build/html/_sources/api/nova..virt.images.txt @@ -0,0 +1,6 @@ +The :mod:`nova..virt.images` Module +============================================================================== +.. automodule:: nova..virt.images + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..virt.libvirt_conn.txt b/doc/build/html/_sources/api/nova..virt.libvirt_conn.txt new file mode 100644 index 000000000000..7fb8aed5fe89 --- /dev/null +++ b/doc/build/html/_sources/api/nova..virt.libvirt_conn.txt @@ -0,0 +1,6 @@ +The :mod:`nova..virt.libvirt_conn` Module +============================================================================== +.. automodule:: nova..virt.libvirt_conn + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..virt.xenapi.txt b/doc/build/html/_sources/api/nova..virt.xenapi.txt new file mode 100644 index 000000000000..2e396bf06ccf --- /dev/null +++ b/doc/build/html/_sources/api/nova..virt.xenapi.txt @@ -0,0 +1,6 @@ +The :mod:`nova..virt.xenapi` Module +============================================================================== +.. automodule:: nova..virt.xenapi + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..volume.driver.txt b/doc/build/html/_sources/api/nova..volume.driver.txt new file mode 100644 index 000000000000..51f5c07295c0 --- /dev/null +++ b/doc/build/html/_sources/api/nova..volume.driver.txt @@ -0,0 +1,6 @@ +The :mod:`nova..volume.driver` Module +============================================================================== +.. automodule:: nova..volume.driver + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..volume.manager.txt b/doc/build/html/_sources/api/nova..volume.manager.txt new file mode 100644 index 000000000000..91a192a8f5ef --- /dev/null +++ b/doc/build/html/_sources/api/nova..volume.manager.txt @@ -0,0 +1,6 @@ +The :mod:`nova..volume.manager` Module +============================================================================== +.. automodule:: nova..volume.manager + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/api/nova..wsgi.txt b/doc/build/html/_sources/api/nova..wsgi.txt new file mode 100644 index 000000000000..0bff1c332399 --- /dev/null +++ b/doc/build/html/_sources/api/nova..wsgi.txt @@ -0,0 +1,6 @@ +The :mod:`nova..wsgi` Module +============================================================================== +.. automodule:: nova..wsgi + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/cloud101.txt b/doc/build/html/_sources/cloud101.txt new file mode 100644 index 000000000000..87db5af1eb77 --- /dev/null +++ b/doc/build/html/_sources/cloud101.txt @@ -0,0 +1,85 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Cloud Computing 101 +=================== + +Originally the term cloud came from a diagram that contained a cloud-like shape to contain the +services that afforded computing power that was harnessed to get work done. Much like the electrical +power we receive each day, cloud computing is a model for enabling access to a shared collection of +computing resources - networks for transfer, servers for storage, and applications or services for +completing work. + +Why Cloud? +---------- +Like humans supposedly only use 10% of their brain power, many of the computers in place in data +centers today are underutilized in computing power and networking bandwidth. People also may need a large +amount of computing capacity to complete a computation for example, but don't need the computing power +once the computation is done. You want cloud computing when you want a service that's available +on-demand with the flexibility to bring it up or down through automation or with little intervention. + +Attributes of a Cloud +--------------------- +On-demand self-service - A cloud should enable self-service, so that users can provision servers and networks with little +human intervention. + +Network access - Any computing capabilities are available over the network and you can use many different +devices through standardized mechanisms. + +Resource pooling - Clouds can serve multiple consumers according to demand. + +Elasticity - Provisioning is rapid and scales out or in based on need. + +Metered or measured service - Just like utilities that are paid for by the hour, clouds should optimize +resource use and control it for the level of service or type of servers such as storage or processing. + +Types of Cloud Services +----------------------- + +Cloud computing offers different service models depending on the capabilities a consumer may require. +The US-based National Institute of Standards and Technology offers definitions for cloud computing +and the service models that are emerging. + +SaaS - Software as a Service +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Provides the consumer the ability to use the software in a cloud environment, such as web-based email for example. + +PaaS - Platform as a Service +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Provides the consumer the ability to deploy applications through a programming language or tools supported +by the cloud platform provider. An example of platform as a service is an Eclipse/Java programming +platform provided with no downloads required. + +IaaS - Infrastructure as a Service +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Provides infrastructure such as computer instances, network connections, and storage so that people +can run any software or operating system. + +.. todo:: Use definitions from http://csrc.nist.gov/groups/SNS/cloud-computing/ and attribute NIST + +Types of Cloud Deployments +-------------------------- +.. todo:: describe public/private/hybrid/etc + + +Work in the Clouds +------------------ + +.. todo:: What people have done/sample projects diff --git a/doc/build/html/_sources/code.txt b/doc/build/html/_sources/code.txt new file mode 100644 index 000000000000..6b8d5661f55f --- /dev/null +++ b/doc/build/html/_sources/code.txt @@ -0,0 +1,96 @@ +Generating source/api/nova..adminclient.rst +Generating source/api/nova..api.cloud.rst +Generating source/api/nova..api.ec2.admin.rst +Generating source/api/nova..api.ec2.apirequest.rst +Generating source/api/nova..api.ec2.cloud.rst +Generating source/api/nova..api.ec2.images.rst +Generating source/api/nova..api.ec2.metadatarequesthandler.rst +Generating source/api/nova..api.openstack.auth.rst +Generating source/api/nova..api.openstack.backup_schedules.rst +Generating source/api/nova..api.openstack.faults.rst +Generating source/api/nova..api.openstack.flavors.rst +Generating source/api/nova..api.openstack.images.rst +Generating source/api/nova..api.openstack.servers.rst +Generating source/api/nova..api.openstack.sharedipgroups.rst +Generating source/api/nova..auth.dbdriver.rst +Generating source/api/nova..auth.fakeldap.rst +Generating source/api/nova..auth.ldapdriver.rst +Generating source/api/nova..auth.manager.rst +Generating source/api/nova..auth.signer.rst +Generating source/api/nova..cloudpipe.pipelib.rst +Generating source/api/nova..compute.disk.rst +Generating source/api/nova..compute.instance_types.rst +Generating source/api/nova..compute.manager.rst +Generating source/api/nova..compute.monitor.rst +Generating source/api/nova..compute.power_state.rst +Generating source/api/nova..context.rst +Generating source/api/nova..crypto.rst +Generating source/api/nova..db.api.rst +Generating source/api/nova..db.sqlalchemy.api.rst +Generating source/api/nova..db.sqlalchemy.models.rst +Generating source/api/nova..db.sqlalchemy.session.rst +Generating source/api/nova..exception.rst +Generating source/api/nova..fakerabbit.rst +Generating source/api/nova..flags.rst +Generating source/api/nova..image.service.rst +Generating source/api/nova..manager.rst +Generating source/api/nova..network.linux_net.rst +Generating source/api/nova..network.manager.rst +Generating source/api/nova..objectstore.bucket.rst +Generating source/api/nova..objectstore.handler.rst +Generating source/api/nova..objectstore.image.rst +Generating source/api/nova..objectstore.stored.rst +Generating source/api/nova..process.rst +Generating source/api/nova..quota.rst +Generating source/api/nova..rpc.rst +Generating source/api/nova..scheduler.chance.rst +Generating source/api/nova..scheduler.driver.rst +Generating source/api/nova..scheduler.manager.rst +Generating source/api/nova..scheduler.simple.rst +Generating source/api/nova..server.rst +Generating source/api/nova..service.rst +Generating source/api/nova..test.rst +Generating source/api/nova..tests.access_unittest.rst +Generating source/api/nova..tests.api.fakes.rst +Generating source/api/nova..tests.api.openstack.fakes.rst +Generating source/api/nova..tests.api.openstack.test_api.rst +Generating source/api/nova..tests.api.openstack.test_auth.rst +Generating source/api/nova..tests.api.openstack.test_faults.rst +Generating source/api/nova..tests.api.openstack.test_flavors.rst +Generating source/api/nova..tests.api.openstack.test_images.rst +Generating source/api/nova..tests.api.openstack.test_ratelimiting.rst +Generating source/api/nova..tests.api.openstack.test_servers.rst +Generating source/api/nova..tests.api.openstack.test_sharedipgroups.rst +Generating source/api/nova..tests.api.test_wsgi.rst +Generating source/api/nova..tests.api_integration.rst +Generating source/api/nova..tests.api_unittest.rst +Generating source/api/nova..tests.auth_unittest.rst +Generating source/api/nova..tests.cloud_unittest.rst +Generating source/api/nova..tests.compute_unittest.rst +Generating source/api/nova..tests.declare_flags.rst +Generating source/api/nova..tests.fake_flags.rst +Generating source/api/nova..tests.flags_unittest.rst +Generating source/api/nova..tests.network_unittest.rst +Generating source/api/nova..tests.objectstore_unittest.rst +Generating source/api/nova..tests.process_unittest.rst +Generating source/api/nova..tests.quota_unittest.rst +Generating source/api/nova..tests.real_flags.rst +Generating source/api/nova..tests.rpc_unittest.rst +Generating source/api/nova..tests.runtime_flags.rst +Generating source/api/nova..tests.scheduler_unittest.rst +Generating source/api/nova..tests.service_unittest.rst +Generating source/api/nova..tests.twistd_unittest.rst +Generating source/api/nova..tests.validator_unittest.rst +Generating source/api/nova..tests.virt_unittest.rst +Generating source/api/nova..tests.volume_unittest.rst +Generating source/api/nova..twistd.rst +Generating source/api/nova..utils.rst +Generating source/api/nova..validate.rst +Generating source/api/nova..virt.connection.rst +Generating source/api/nova..virt.fake.rst +Generating source/api/nova..virt.images.rst +Generating source/api/nova..virt.libvirt_conn.rst +Generating source/api/nova..virt.xenapi.rst +Generating source/api/nova..volume.driver.rst +Generating source/api/nova..volume.manager.rst +Generating source/api/nova..wsgi.rst diff --git a/doc/build/html/_sources/community.txt b/doc/build/html/_sources/community.txt new file mode 100644 index 000000000000..bfb93414ce1e --- /dev/null +++ b/doc/build/html/_sources/community.txt @@ -0,0 +1,84 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Getting Involved +================ + +The Nova community is a very friendly group and there are places online to join in with the +community. Feel free to ask questions. This document points you to some of the places where you can +communicate with people. + +How to Join the OpenStack Community +----------------------------------- + +Our community welcomes all people interested in open source cloud computing, and there are no formal +membership requirements. The best way to join the community is to talk with others online or at a meetup +and offer contributions through Launchpad, the wiki, or blogs. We welcome all types of contributions, +from blueprint designs to documentation to testing to deployment scripts. + +Contributing Code +----------------- + +To contribute code, sign up for a Launchpad account and sign a contributor license agreement, +available on the `OpenStack Wiki `_. Once the CLA is signed you +can contribute code through the Bazaar version control system which is related to your Launchpad account. + +#openstack on Freenode IRC Network +---------------------------------- + +There is a very active chat channel at ``_. This +is usually the best place to ask questions and find your way around. IRC stands for Internet Relay +Chat and it is a way to chat online in real time. You can also ask a question and come back to the +log files to read the answer later. Logs for the #openstack IRC channel are stored at +``_. + +OpenStack Wiki +-------------- + +The wiki is a living source of knowledge. It is edited by the community, and +has collections of links and other sources of information. Typically the pages are a good place +to write drafts for specs or documentation, describe a blueprint, or collaborate with others. + +`OpenStack Wiki `_ + +Nova on Launchpad +----------------- + +Launchpad is a code hosting service that hosts the Nova source code. From +Launchpad you can report bugs, ask questions, and register blueprints (feature requests). + +* `Learn about how to use bzr with launchpad `_ +* `Launchpad Nova Page `_ + +OpenStack Blog +-------------- + +The OpenStack blog includes a weekly newsletter that aggregates OpenStack news +from around the internet, as well as providing inside information on upcoming +events and posts from OpenStack contributors. + +`OpenStack Blog `_ + +See also: `Planet OpenStack `_, aggregating blogs +about OpenStack from around the internet into a single feed. If you'd like to contribute to this blog +aggregation with your blog posts, there are instructions for `adding your blog `_. + +Twitter +------- + +Because all the cool kids do it: `@openstack `_. Also follow the +`#openstack `_ tag for relevant tweets. diff --git a/doc/build/html/_sources/devref/api.txt b/doc/build/html/_sources/devref/api.txt new file mode 100644 index 000000000000..14181529a976 --- /dev/null +++ b/doc/build/html/_sources/devref/api.txt @@ -0,0 +1,296 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +API Endpoint +============ + +Nova has a system for managing multiple APIs on different subdomains. +Currently there is support for the OpenStack API, as well as the Amazon EC2 +API. + +Common Components +----------------- + +The :mod:`nova.api` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.api.cloud` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.cloud + :noindex: + :members: + :undoc-members: + :show-inheritance: + +OpenStack API +------------- + +The :mod:`openstack` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`auth` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.auth + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`backup_schedules` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.backup_schedules + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`faults` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.faults + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`flavors` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.flavors + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`images` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.images + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`ratelimiting` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.ratelimiting + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`servers` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.servers + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`sharedipgroups` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. automodule:: nova.api.openstack.sharedipgroups + :noindex: + :members: + :undoc-members: + :show-inheritance: + +EC2 API +------- + +The :mod:`nova.api.ec2` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.ec2 + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`admin` Module +~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.ec2.admin + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`apirequest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.ec2.apirequest + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`cloud` Module +~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.ec2.cloud + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`images` Module +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.ec2.images + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`metadatarequesthandler` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.ec2.metadatarequesthandler + :noindex: + :members: + :undoc-members: + :show-inheritance: + +Tests +----- + +The :mod:`api_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`api_integration` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api_integration + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`cloud_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.cloud_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`api.fakes` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.fakes + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`api.test_wsgi` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.test_wsgi + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_api` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_api + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_auth` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_auth + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_faults` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_faults + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_flavors` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_flavors + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_images` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_images + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_ratelimiting` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_ratelimiting + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_servers` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_servers + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`test_sharedipgroups` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.api.openstack.test_sharedipgroups + :noindex: + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/build/html/_sources/devref/architecture.txt b/doc/build/html/_sources/devref/architecture.txt new file mode 100644 index 000000000000..1e23e13617c8 --- /dev/null +++ b/doc/build/html/_sources/devref/architecture.txt @@ -0,0 +1,52 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Nova System Architecture +======================== + +Nova is built on a shared-nothing, messaging-based architecture. All of the major nova components can be run on multiple servers. This means that most component to component communication must go via message queue. In order to avoid blocking each component while waiting for a response, we use deferred objects, with a callback that gets triggered when a response is received. + +Nova recently moved to using a sql-based central database that is shared by all components in the system. The amount and depth of the data fits into a sql database quite well. For small deployments this seems like an optimal solution. For larger deployments, and especially if security is a concern, nova will be moving towards multiple data stores with some kind of aggregation system. + +Components +---------- + +Below you will find a helpful explanation of the different components. + +:: + + /- ( LDAP ) + [ Auth Manager ] --- + | \- ( DB ) + | + | [ scheduler ] - [ volume ] - ( ATAoE/iSCSI ) + | / + [ Web Dashboard ] -> [ api ] -- < AMQP > ------ [ network ] - ( Flat/Vlan ) + | \ + < HTTP > [ scheduler ] - [ compute ] - ( libvirt/xen ) + | | + [ objectstore ] < - retrieves images + +* DB: sql database for data storage. Used by all components (LINKS NOT SHOWN) +* Web Dashboard: potential external component that talks to the api +* api: component that receives http requests, converts commands and communicates with other components via the queue or http (in the case of objectstore) +* Auth Manager: component responsible for users/projects/and roles. Can backend to DB or LDAP. This is not a separate binary, but rather a python class that is used by most components in the system. +* objectstore: twisted http server that replicates s3 api and allows storage and retrieval of images +* scheduler: decides which host gets each vm and volume +* volume: manages dynamically attachable block devices. +* network: manages ip forwarding, bridges, and vlans +* compute: manages communication with hypervisor and virtual machines. diff --git a/doc/build/html/_sources/devref/auth.txt b/doc/build/html/_sources/devref/auth.txt new file mode 100644 index 000000000000..c3af3f945e45 --- /dev/null +++ b/doc/build/html/_sources/devref/auth.txt @@ -0,0 +1,276 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +.. _auth: + +Authentication and Authorization +================================ + +The :mod:`nova.quota` Module +---------------------------- + +.. automodule:: nova.quota + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.auth.signer` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.auth.signer + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Auth Manager +------------ + +The :mod:`nova.auth.manager` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.auth.manager + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.auth.ldapdriver` Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.auth.ldapdriver + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.auth.dbdriver` Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.auth.dbdriver + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Tests +----- + + +The :mod:`auth_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.auth_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`access_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.access_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`quota_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.quota_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Legacy Docs +----------- + +Nova provides RBAC (Role-based access control) of the AWS-type APIs. We define the following roles: + +Roles-Based Access Control of AWS-style APIs using SAML Assertions +“Achieving FIPS 199 Moderate certification of a hybrid cloud environment using CloudAudit and declarative C.I.A. classifications†+ + +Introduction +------------ + +We will investigate one method for integrating an AWS-style API with US eAuthentication-compatible federated authentication systems, to achieve access controls and limits based on traditional operational roles. +Additionally, we will look at how combining this approach, with an implementation of the CloudAudit APIs, will allow us to achieve a certification under FIPS 199 Moderate classification for a hybrid cloud environment. + + +Relationship of US eAuth to RBAC +-------------------------------- + +Typical implementations of US eAuth authentication systems are structured as follows:: + + [ MS Active Directory or other federated LDAP user store ] + --> backends to… + [ SUN Identity Manager or other SAML Policy Controller ] + --> maps URLs to groups… + [ Apache Policy Agent in front of eAuth-secured Web Application ] + +In more ideal implementations, the remainder of the application-specific account information is stored either in extended schema on the LDAP server itself, via the use of a translucent LDAP proxy, or in an independent datastore keyed off of the UID provided via SAML assertion. + +.. _auth_roles: + + +Roles +----- + +AWS API calls are traditionally secured via Access and Secret Keys, which are used to sign API calls, along with traditional timestamps to prevent replay attacks. The APIs can be logically grouped into sets that align with five typical roles: + +* Base User +* System Administrator/Developer (currently have the same permissions) +* Network Administrator +* Project Manager +* Cloud Administrator/IT-Security (currently have the same permissions) + +There is an additional, conceptual end-user that may or may not have API access: + +* (EXTERNAL) End-user / Third-party User + +Basic operations are available to any : + +* Describe Instances +* Describe Images +* Describe Volumes +* Describe Keypairs +* Create Keypair +* Delete Keypair +* Create, Upload, Delete: Buckets and Keys (Object Store) + +System Administrators/Developers/Project Manager: + +* Create, Attach, Delete Volume (Block Store) +* Launch, Reboot, Terminate Instance +* Register/Unregister Machine Image (project-wide) +* Request / Review CloudAudit Scans + +Project Manager: + +* Add and remove other users (currently no api) +* Set roles (currently no api) + +Network Administrator: + +* Change Machine Image properties (public / private) +* Change Firewall Rules, define Security Groups +* Allocate, Associate, Deassociate Public IP addresses + +Cloud Administrator/IT-Security: + +* All permissions + + +Enhancements +------------ + +* SAML Token passing +* REST interfaces +* SOAP interfaces + +Wrapping the SAML token into the API calls. +Then store the UID (fetched via backchannel) into the instance metadata, providing end-to-end auditability of ownership and responsibility, without PII. + + +CloudAudit APIs +--------------- + +* Request formats +* Response formats +* Stateless asynchronous queries + +CloudAudit queries may spawn long-running processes (similar to launching instances, etc.) They need to return a ReservationId in the same fashion, which can be returned in further queries for updates. +RBAC of CloudAudit API calls is critical, since detailed system information is a system vulnerability. + + +Type declarations +----------------- +* Data declarations – Volumes and Objects +* System declarations – Instances + +Existing API calls to launch instances specific a single, combined “type†flag. We propose to extend this with three additional type declarations, mapping to the “Confidentiality, Integrity, Availability†classifications of FIPS 199. An example API call would look like:: + + RunInstances type=m1.large number=1 secgroup=default key=mykey confidentiality=low integrity=low availability=low + +These additional parameters would also apply to creation of block storage volumes (along with the existing parameter of ‘size’), and creation of object storage ‘buckets’. (C.I.A. classifications on a bucket would be inherited by the keys within this bucket.) + + +Request Brokering +----------------- + +* Cloud Interop +* IMF Registration / PubSub +* Digital C&A + +Establishing declarative semantics for individual API calls will allow the cloud environment to seamlessly proxy these API calls to external, third-party vendors – when the requested CIA levels match. + +See related work within the Infrastructure 2.0 working group for more information on how the IMF Metadata specification could be utilized to manage registration of these vendors and their C&A credentials. + + +Dirty Cloud – Hybrid Data Centers +--------------------------------- + +* CloudAudit bridge interfaces +* Anything in the ARP table + +A hybrid cloud environment provides dedicated, potentially co-located physical hardware with a network interconnect to the project or users’ cloud virtual network. + +This interconnect is typically a bridged VPN connection. Any machines that can be bridged into a hybrid environment in this fashion (at Layer 2) must implement a minimum version of the CloudAudit spec, such that they can be queried to provide a complete picture of the IT-sec runtime environment. + +Network discovery protocols (ARP, CDP) can be applied in this case, and existing protocols (SNMP location data, DNS LOC records) overloaded to provide CloudAudit information. + + +The Details +----------- + +* Preliminary Roles Definitions +* Categorization of available API calls +* SAML assertion vocabulary + + +System limits +------------- + +The following limits need to be defined and enforced: + +* Total number of instances allowed (user / project) +* Total number of instances, per instance type (user / project) +* Total number of volumes (user / project) +* Maximum size of volume +* Cumulative size of all volumes +* Total use of object storage (GB) +* Total number of Public IPs + + +Further Challenges +------------------ + +* Prioritization of users / jobs in shared computing environments +* Incident response planning +* Limit launch of instances to specific security groups based on AMI +* Store AMIs in LDAP for added property control diff --git a/doc/build/html/_sources/devref/cloudpipe.txt b/doc/build/html/_sources/devref/cloudpipe.txt new file mode 100644 index 000000000000..31bd85e8178f --- /dev/null +++ b/doc/build/html/_sources/devref/cloudpipe.txt @@ -0,0 +1,95 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + + +.. _cloudpipe: + +Cloudpipe -- Per Project Vpns +============================= + +Cloudpipe is a method for connecting end users to their project insnances in vlan mode. + + +Overview +-------- + +The support code for cloudpipe implements admin commands (via nova-manage) to automatically create a vm for a project that allows users to vpn into the private network of their project. Access to this vpn is provided through a public port on the network host for the project. This allows users to have free access to the virtual machines in their project without exposing those machines to the public internet. + + +Cloudpipe Image +--------------- + +The cloudpipe image is basically just a linux instance with openvpn installed. It needs a simple script to grab user data from the metadata server, b64 decode it into a zip file, and run the autorun.sh script from inside the zip. The autorun script will configure and run openvpn to run using the data from nova. + +It is also useful to have a cron script that will periodically redownload the metadata and copy the new crl. This will keep revoked users from connecting and will disconnect any users that are connected with revoked certificates when their connection is renegotiated (every hour). + + +Cloudpipe Launch +---------------- + +When you use nova-manage to launch a cloudpipe for a user, it goes through the following process: + +#. creates a keypair called -vpn and saves it in the keys directory +#. creates a security group -vpn and opens up 1194 and icmp +#. creates a cert and private key for the vpn instance and saves it in the CA/projects// directory +#. zips up the info and puts it b64 encoded as user data +#. launches an m1.tiny instance with the above settings using the flag-specified vpn image + + +Vpn Access +---------- + +In vlan networking mode, the second ip in each private network is reserved for the cloudpipe instance. This gives a consistent ip to the instance so that nova-network can create forwarding rules for access from the outside world. The network for each project is given a specific high-numbered port on the public ip of the network host. This port is automatically forwarded to 1194 on the vpn instance. + +If specific high numbered ports do not work for your users, you can always allocate and associate a public ip to the instance, and then change the vpn_public_ip and vpn_public_port in the database. This will be turned into a nova-manage command or a flag soon. + + +Certificates and Revocation +--------------------------- + +If the use_project_ca flag is set (required to for cloudpipes to work securely), then each project has its own ca. This ca is used to sign the certificate for the vpn, and is also passed to the user for bundling images. When a certificate is revoked using nova-manage, a new Certificate Revocation List (crl) is generated. As long as cloudpipe has an updated crl, it will block revoked users from connecting to the vpn. + + +The :mod:`nova.cloudpipe.pipelib` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.cloudpipe.pipelib + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.api.cloudpipe` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.api.cloudpipe + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.crypto` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.crypto + :noindex: + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/build/html/_sources/devref/compute.txt b/doc/build/html/_sources/devref/compute.txt new file mode 100644 index 000000000000..db9ef6f3424b --- /dev/null +++ b/doc/build/html/_sources/devref/compute.txt @@ -0,0 +1,153 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + + +Virtualization +============== + + +Compute +------- + +Documentation for the compute manager and related files. For reading about +a specific virtualization backend, read Drivers_. + + +The :mod:`nova.compute.manager` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.compute.manager + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.virt.connection` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.virt.connection + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.compute.disk` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.compute.disk + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.virt.images` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.virt.images + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.compute.instance_types` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.compute.instance_types + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.compute.power_state` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.compute.power_state + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Drivers +------- + + +The :mod:`nova.virt.libvirt_conn` Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.virt.libvirt_conn + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.virt.xenapi` Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.virt.xenapi + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.virt.fake` Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.virt.fake + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Monitoring +---------- + +The :mod:`nova.compute.monitor` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.compute.monitor + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Tests +----- + +The :mod:`compute_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.compute_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`virt_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.virt_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/devref/database.txt b/doc/build/html/_sources/devref/database.txt new file mode 100644 index 000000000000..14559aa8c3ab --- /dev/null +++ b/doc/build/html/_sources/devref/database.txt @@ -0,0 +1,63 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +The Database Layer +================== + +The :mod:`nova.db.api` Module +----------------------------- + +.. automodule:: nova.db.api + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The Sqlalchemy Driver +--------------------- + +The :mod:`nova.db.sqlalchemy.api` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.db.sqlalchemy.api + :noindex: + +The :mod:`nova.db.sqlalchemy.models` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.db.sqlalchemy.models + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.db.sqlalchemy.session` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.db.sqlalchemy.session + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Tests +----- + +Tests are lacking for the db api layer and for the sqlalchemy driver. +Failures in the drivers would be dectected in other test cases, though. diff --git a/doc/build/html/_sources/devref/development.environment.txt b/doc/build/html/_sources/devref/development.environment.txt new file mode 100644 index 000000000000..34104c96420c --- /dev/null +++ b/doc/build/html/_sources/devref/development.environment.txt @@ -0,0 +1,21 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Setting up a development environment +==================================== + +.. todo:: write this diff --git a/doc/build/html/_sources/devref/fakes.txt b/doc/build/html/_sources/devref/fakes.txt new file mode 100644 index 000000000000..0ba5d6ef2bec --- /dev/null +++ b/doc/build/html/_sources/devref/fakes.txt @@ -0,0 +1,85 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Fake Drivers +============ + +.. todo:: document general info about fakes + +When the real thing isn't available and you have some development to do these +fake implementations of various drivers let you get on with your day. + + +The :mod:`nova.virt.fake` Module +-------------------------------- + +.. automodule:: nova.virt.fake + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.auth.fakeldap` Module +------------------------------------ + +.. automodule:: nova.auth.fakeldap + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.fakerabbit` Module +--------------------------------- + +.. automodule:: nova.fakerabbit + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :class:`nova.volume.driver.FakeAOEDriver` Class +--------------------------------------------------- + +.. autoclass:: nova.volume.driver.FakeAOEDriver + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :class:`nova.tests.service_unittest.FakeManager` Class +---------------------------------------------------------- + +.. autoclass:: nova.tests.service_unittest.FakeManager + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.tests.api.openstack.fakes` Module +------------------------------------------------ + +.. automodule:: nova.tests.api.openstack.fakes + :noindex: + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/build/html/_sources/devref/glance.txt b/doc/build/html/_sources/devref/glance.txt new file mode 100644 index 000000000000..d18f7fec6787 --- /dev/null +++ b/doc/build/html/_sources/devref/glance.txt @@ -0,0 +1,28 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Glance Integration - The Future of File Storage +=============================================== + +The :mod:`nova.image.service` Module +------------------------------------ + +.. automodule:: nova.image.service + :noindex: + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/devref/index.txt b/doc/build/html/_sources/devref/index.txt new file mode 100644 index 000000000000..6a93e3e188c8 --- /dev/null +++ b/doc/build/html/_sources/devref/index.txt @@ -0,0 +1,62 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Developer Guide +=============== + +In this section you will find information on Nova's lower level programming APIs. + + +Programming HowTos and Tutorials +-------------------------------- + +.. todo:: Add some programming howtos and tuts + +API Reference +------------- +.. toctree:: + :maxdepth: 3 + + ../api/autoindex + +Module Reference +---------------- +.. toctree:: + :maxdepth: 3 + + services + database + volume + compute + network + auth + api + scheduler + fakes + nova + cloudpipe + objectstore + glance + + +Indices and tables +------------------ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/doc/build/html/_sources/devref/modules.txt b/doc/build/html/_sources/devref/modules.txt new file mode 100644 index 000000000000..31792b219e36 --- /dev/null +++ b/doc/build/html/_sources/devref/modules.txt @@ -0,0 +1,19 @@ +Module Reference +================ + +.. toctree:: + :maxdepth: 1 + + services + database + volume + compute + network + auth + api + scheduler + fakes + nova + cloudpipe + objectstore + glance diff --git a/doc/build/html/_sources/devref/network.txt b/doc/build/html/_sources/devref/network.txt new file mode 100644 index 000000000000..d9d0914946f7 --- /dev/null +++ b/doc/build/html/_sources/devref/network.txt @@ -0,0 +1,128 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Networking +========== + +.. todo:: + + * document hardware specific commands (maybe in admin guide?) (todd) + * document a map between flags and managers/backends (todd) + + +The :mod:`nova.network.manager` Module +-------------------------------------- + +.. automodule:: nova.network.manager + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.network.linux_net` Driver +---------------------------------------- + +.. automodule:: nova.network.linux_net + :noindex: + :members: + :undoc-members: + :show-inheritance: + +Tests +----- + +The :mod:`network_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.network_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Legacy docs +----------- + +The nova networking components manage private networks, public IP addressing, VPN connectivity, and firewall rules. + +Components +---------- +There are several key components: + +* NetworkController (Manages address and vlan allocation) +* RoutingNode (NATs public IPs to private IPs, and enforces firewall rules) +* AddressingNode (runs DHCP services for private networks) +* BridgingNode (a subclass of the basic nova ComputeNode) +* TunnelingNode (provides VPN connectivity) + +Component Diagram +----------------- + +Overview:: + + (PUBLIC INTERNET) + | \ + / \ / \ + [RoutingNode] ... [RN] [TunnelingNode] ... [TN] + | \ / | | + | < AMQP > | | + [AddressingNode]-- (VLAN) ... | (VLAN)... (VLAN) --- [AddressingNode] + \ | \ / + / \ / \ / \ / \ + [BridgingNode] ... [BridgingNode] + + + [NetworkController] ... [NetworkController] + \ / + < AMQP > + | + / \ + [CloudController]...[CloudController] + +While this diagram may not make this entirely clear, nodes and controllers communicate exclusively across the message bus (AMQP, currently). + +State Model +----------- +Network State consists of the following facts: + +* VLAN assignment (to a project) +* Private Subnet assignment (to a security group) in a VLAN +* Private IP assignments (to running instances) +* Public IP allocations (to a project) +* Public IP associations (to a private IP / running instance) + +While copies of this state exist in many places (expressed in IPTables rule chains, DHCP hosts files, etc), the controllers rely only on the distributed "fact engine" for state, queried over RPC (currently AMQP). The NetworkController inserts most records into this datastore (allocating addresses, etc) - however, individual nodes update state e.g. when running instances crash. + +The Public Traffic Path +----------------------- + +Public Traffic:: + + (PUBLIC INTERNET) + | + <-- [RoutingNode] + | + [AddressingNode] --> | + ( VLAN ) + | <-- [BridgingNode] + | + + +The RoutingNode is currently implemented using IPTables rules, which implement both NATing of public IP addresses, and the appropriate firewall chains. We are also looking at using Netomata / Clusto to manage NATting within a switch or router, and/or to manage firewall rules within a hardware firewall appliance. + +Similarly, the AddressingNode currently manages running DNSMasq instances for DHCP services. However, we could run an internal DHCP server (using Scapy ala Clusto), or even switch to static addressing by inserting the private address into the disk image the same way we insert the SSH keys. (See compute for more details). diff --git a/doc/build/html/_sources/devref/nova.txt b/doc/build/html/_sources/devref/nova.txt new file mode 100644 index 000000000000..53ce6f34fc3c --- /dev/null +++ b/doc/build/html/_sources/devref/nova.txt @@ -0,0 +1,235 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Common and Misc Libraries +========================= + +Libraries common throughout Nova or just ones that haven't been categorized +very well yet. + + +The :mod:`nova.adminclient` Module +---------------------------------- + +.. automodule:: nova.adminclient + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.context` Module +------------------------------ + +.. automodule:: nova.context + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.exception` Module +-------------------------------- + +.. automodule:: nova.exception + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.flags` Module +---------------------------- + +.. automodule:: nova.flags + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.process` Module +------------------------------ + +.. automodule:: nova.process + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.rpc` Module +-------------------------- + +.. automodule:: nova.rpc + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.server` Module +----------------------------- + +.. automodule:: nova.server + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.test` Module +--------------------------- + +.. automodule:: nova.test + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.twistd` Module +----------------------------- + +.. automodule:: nova.twistd + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.utils` Module +---------------------------- + +.. automodule:: nova.utils + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.validate` Module +------------------------------- + +.. automodule:: nova.validate + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.wsgi` Module +--------------------------- + +.. automodule:: nova.wsgi + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Tests +----- + +The :mod:`declare_flags` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.declare_flags + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`fake_flags` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.fake_flags + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`flags_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.flags_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`process_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.process_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`real_flags` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.real_flags + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`rpc_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.rpc_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`runtime_flags` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.runtime_flags + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`twistd_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.twistd_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`validator_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.validator_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/devref/objectstore.txt b/doc/build/html/_sources/devref/objectstore.txt new file mode 100644 index 000000000000..3ccfc8566fc6 --- /dev/null +++ b/doc/build/html/_sources/devref/objectstore.txt @@ -0,0 +1,71 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Objectstore - File Storage Service +================================== + +The :mod:`nova.objectstore.handler` Module +------------------------------------------ + +.. automodule:: nova.objectstore.handler + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.objectstore.bucket` Module +----------------------------------------- + +.. automodule:: nova.objectstore.bucket + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.objectstore.stored` Module +----------------------------------------- + +.. automodule:: nova.objectstore.stored + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.objecstore.image` Module +---------------------------------------- + +.. automodule:: nova.objectstore.image + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Tests +----- + +The :mod:`objectstore_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.objectstore_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/devref/scheduler.txt b/doc/build/html/_sources/devref/scheduler.txt new file mode 100644 index 000000000000..ab74b6ba837e --- /dev/null +++ b/doc/build/html/_sources/devref/scheduler.txt @@ -0,0 +1,71 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Scheduler +========= + +The :mod:`nova.scheduler.manager` Module +---------------------------------------- + +.. automodule:: nova.scheduler.manager + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.scheduler.driver` Module +--------------------------------------- + +.. automodule:: nova.scheduler.driver + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.scheduler.chance` Driver +--------------------------------------- + +.. automodule:: nova.scheduler.chance + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.scheduler.simple` Driver +--------------------------------------- + +.. automodule:: nova.scheduler.simple + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Tests +----- + +The :mod:`scheduler_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.scheduler_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/build/html/_sources/devref/services.txt b/doc/build/html/_sources/devref/services.txt new file mode 100644 index 000000000000..f5bba5c126d5 --- /dev/null +++ b/doc/build/html/_sources/devref/services.txt @@ -0,0 +1,55 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +.. _service_manager_driver: + +Services, Managers and Drivers +============================== + +The responsibilities of Services, Managers, and Drivers, can be a bit confusing to people that are new to nova. This document attempts to outline the division of responsibilities to make understanding the system a little bit easier. + +Currently, Managers and Drivers are specified by flags and loaded using utils.load_object(). This method allows for them to be implemented as singletons, classes, modules or objects. As long as the path specified by the flag leads to an object (or a callable that returns an object) that responds to getattr, it should work as a manager or driver. + + +The :mod:`nova.service` Module +------------------------------ + +.. automodule:: nova.service + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +The :mod:`nova.manager` Module +------------------------------ + +.. automodule:: nova.manager + :noindex: + :members: + :undoc-members: + :show-inheritance: + + +Implementation-Specific Drivers +------------------------------- + +A manager will generally load a driver for some of its tasks. The driver is responsible for specific implementation details. Anything running shell commands on a host, or dealing with other non-python code should probably be happening in a driver. + +Drivers should minimize touching the database, although it is currently acceptable for implementation specific data. This may be reconsidered at some point. + +It usually makes sense to define an Abstract Base Class for the specific driver (i.e. VolumeDriver), to define the methods that a different driver would need to implement. diff --git a/doc/build/html/_sources/devref/volume.txt b/doc/build/html/_sources/devref/volume.txt new file mode 100644 index 000000000000..54a2d4f8bccb --- /dev/null +++ b/doc/build/html/_sources/devref/volume.txt @@ -0,0 +1,66 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Storage Volumes, Disks +====================== + +.. todo:: rework after iSCSI merge (see 'Old Docs') (todd or vish) + + +The :mod:`nova.volume.manager` Module +------------------------------------- + +.. automodule:: nova.volume.manager + :noindex: + :members: + :undoc-members: + :show-inheritance: + +The :mod:`nova.volume.driver` Module +------------------------------------- + +.. automodule:: nova.volume.driver + :noindex: + :members: + :undoc-members: + :show-inheritance: + :exclude-members: FakeAOEDriver + +Tests +----- + +The :mod:`volume_unittest` Module +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. automodule:: nova.tests.volume_unittest + :noindex: + :members: + :undoc-members: + :show-inheritance: + +Old Docs +-------- + +Nova uses ata-over-ethernet (AoE) to export storage volumes from multiple storage nodes. These AoE exports are attached (using libvirt) directly to running instances. + +Nova volumes are exported over the primary system VLAN (usually VLAN 1), and not over individual VLANs. + +AoE exports are numbered according to a "shelf and blade" syntax. In order to avoid collisions, we currently perform an AoE-discover of existing exports, and then grab the next unused number. (This obviously has race condition problems, and should be replaced by allocating a shelf-id to each storage node.) + +The underlying volumes are LVM logical volumes, created on demand within a single large volume group. + + diff --git a/doc/build/html/_sources/index.txt b/doc/build/html/_sources/index.txt new file mode 100644 index 000000000000..9b2c8e1f8d3a --- /dev/null +++ b/doc/build/html/_sources/index.txt @@ -0,0 +1,88 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Welcome to Nova's documentation! +================================ + +Nova is a cloud computing fabric controller, the main part of an IaaS system. +Individuals and organizations can use Nova to host and manage their own cloud +computing systems. Nova originated as a project out of NASA Ames Research Laboratory. + +Nova is written with the following design guidelines in mind: + +* **Component based architecture**: Quickly add new behaviors +* **Highly available**: Scale to very serious workloads +* **Fault-Tollerant**: Isloated processes avoid cascading failures +* **Recoverable**: Failures should be easy to diagnose, debug, and rectify +* **Open Standards**: Be a reference implementation for a community-driven api +* **API Compatibility**: Nova strives to provide API-compatible with popular systems like Amazon EC2 + +This documentation is generated by the Sphinx toolkit and lives in the source +tree. Additional documentation on Nova and other components of OpenStack can +be found on the `OpenStack wiki`_. Also see the :doc:`community` page for +other ways to interact with the community. + +.. _`OpenStack wiki`: http://wiki.openstack.org + + +Key Concepts +============ +.. toctree:: + :maxdepth: 1 + + cloud101 + nova.concepts + swift.concepts + service.architecture + nova.object.model + swift.object.model + +Administrator's Documentation +============================= + +.. toctree:: + :maxdepth: 1 + + livecd + adminguide/index + adminguide/single.node.install + adminguide/multi.node.install + +.. todo:: add swiftadmin + +Developer Docs +============== + +.. toctree:: + :maxdepth: 1 + + quickstart + devref/index + community + +Outstanding Documentation Tasks +=============================== + +.. todolist:: + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/doc/build/html/_sources/installer.txt b/doc/build/html/_sources/installer.txt new file mode 100644 index 000000000000..b67e0e4f920c --- /dev/null +++ b/doc/build/html/_sources/installer.txt @@ -0,0 +1,12 @@ +Live CD +======= + +* 3 Images +* Once you start bundling images, must be able to point to source code +* Could make part of build + +* sudo nova-manage user admin newuser +* sudo nova-manage project create demo newuser +* sudo nova-manage project zipfile demo +* get images +* Web browser diff --git a/doc/build/html/_sources/livecd.txt b/doc/build/html/_sources/livecd.txt new file mode 100644 index 000000000000..82cf4658a027 --- /dev/null +++ b/doc/build/html/_sources/livecd.txt @@ -0,0 +1,2 @@ +Installing the Live CD +====================== diff --git a/doc/build/html/_sources/man/novamanage.txt b/doc/build/html/_sources/man/novamanage.txt new file mode 100644 index 000000000000..acd76aac0ff7 --- /dev/null +++ b/doc/build/html/_sources/man/novamanage.txt @@ -0,0 +1,98 @@ +=========== +nova-manage +=========== + +------------------------------------------------------ +control and manage cloud computer instances and images +------------------------------------------------------ + +:Author: nova@lists.launchpad.net +:Date: 2010-11-16 +:Copyright: OpenStack LLC +:Version: 0.1 +:Manual section: 1 +:Manual group: cloud computing + +SYNOPSIS +======== + + nova-manage [] + +DESCRIPTION +=========== + +nova-manage controls cloud computing instances by managing nova users, nova projects, nova roles, shell selection, vpn connections, and floating IP address configuration. More information about OpenStack Nova is at http://nova.openstack.org. + +OPTIONS +======= + +Run without arguments to see a list of available command categories. Categories are user, project, role, shell, vpn, and floating. Detailed descriptions are below. +:: +nova-manage + +You can also run with a category argument such as user to see a list of all commands in that category. +:: +nova-manage user + +Here are the available categories and arguments for nova-manage: + +nova-manage user [] + user admin Create an admin user with the name . + user create Create a normal user with the name . + user delete Delete the user with the name . + user exports Outputs a list of access key and secret keys for user to the screen + user list Outputs a list of all the user names to the screen. + user modify Updates the indicated user keys, indicating with T or F if the user is an admin user. Leave any argument blank if you do not want to update it. + +nova-manage project [] + project add Add a nova project with the name to the database. + project create Create a new nova project with the name (you still need to do nova-manage project add to add it to the database). + project delete Delete a nova project with the name . + project environment Exports environment variables for the named project to a file named novarc. + project list Outputs a list of all the projects to the screen. + project quota Outputs the size and specs of the project's instances including gigabytes, instances, floating IPs, volumes, and cores. + project remove Deletes the project with the name . + project zipfile Compresses all related files for a created project into a zip file nova.zip. + +nova-manage role [] + role add <(optional) projectname> Add a user to either a global or project-based role with the indicated assigned to the named user. Role names can be one of the following five roles: admin, itsec, projectmanager, netadmin, developer. If you add the project name as the last argument then the role is assigned just for that project, otherwise the user is assigned the named role for all projects. + role has Checks the user or project and responds with True if the user has a global role with a particular project. + role remove Remove the indicated role from the user. + +nova-manage shell [] + shell bpython Starts a new bpython shell. + shell ipython Starts a new ipython shell. + shell python Starts a new python shell. + shell run Starts a new shell using python. + shell script Runs the named script from the specified path with flags set. + +nova-manage vpn [] + vpn list Displays a list of projects, their IP prot numbers, and what state they're in. + vpn run Starts the VPN for the named project. + vpn spawn Runs all VPNs. + +nova-manage floating [] + floating create Creates floating IP addresses for the named host by the given range. + floating delete Deletes floating IP addresses in the range given. + floating list Displays a list of all floating IP addresses. + +--help, -h Show this help message and exit. + +FILES +======== + +The nova-manage.conf file contains configuration information in the form of python-gflags. + +SEE ALSO +======== + +* `OpenStack Nova `__ +* `OpenStack Swift `__ + +BUGS +==== + +* Nova is sourced in Launchpad so you can view current bugs at `OpenStack Nova `__ + + + diff --git a/doc/build/html/_sources/nova.concepts.txt b/doc/build/html/_sources/nova.concepts.txt new file mode 100644 index 000000000000..ddf0f1b829bd --- /dev/null +++ b/doc/build/html/_sources/nova.concepts.txt @@ -0,0 +1,203 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + + +Nova Concepts and Introduction +============================== + + +Introduction +------------ + +Nova is the software that controls your Infrastructure as as Service (IaaS) +cloud computing platform. It is similar in scope to Amazon EC2 and Rackspace +CloudServers. Nova does not include any virtualization software, rather it +defines drivers that interact with underlying virtualization mechanisms that +run on your host operating system, and exposes functionality over a web API. + +This document does not attempt to explain fundamental concepts of cloud +computing, IaaS, virtualization, or other related technologies. Instead, it +focuses on describing how Nova's implementation of those concepts is achieved. + +This page outlines concepts that you will need to understand as a user or +administrator of an OpenStack installation. Each section links to more more +detailed information in the :doc:`adminguide/index`, +but you'll probably want to read this section straight-through before tackling +the specifics presented in the administration guide. + + +Concept: Users and Projects +--------------------------- + +* access to images is limited by project +* access/secret are per user +* keypairs are per user +* quotas are per project + + +Concept: Virtualization +----------------------- + +* KVM +* UML +* XEN +* HyperV +* qemu + + +Concept: Instances +------------------ + +An 'instance' is a word for a virtual machine that runs inside the cloud. + +Concept: Storage +---------------- + +Volumes +~~~~~~~ + +A 'volume' is a detachable block storage device. You can think of it as a usb hard drive. It can only be attached to one instance at a time, so it does not work like a SAN. If you wish to expose the same volume to multiple instances, you will have to use an NFS or SAMBA share from an existing instance. + +Local Storage +~~~~~~~~~~~~~ + +Every instance larger than m1.tiny starts with some local storage (up to 160GB for m1.xlarge). This storage is currently the second partition on the root drive. + +Concept: Quotas +--------------- + +Nova supports per-project quotas. There are currently quotas for number of instances, total number of cores, number of volumes, total number of gigabytes, and number of floating ips. + + +Concept: RBAC +------------- + +Nova provides roles based access control (RBAC) for access to api commands. A user can have a number of different :ref:`roles `. Roles define which api_commands a user can perform. + +It is important to know that there are user-specific (sometimes called global) roles and project-specific roles. A user's actual permissions in a particular project are the INTERSECTION of his user-specific roles and is project-specific roles. + +For example: A user can access api commands allowed to the netadmin role (like allocate_address) only if he has the user-specific netadmin role AND the project-specific netadmin role. + +More information about RBAC can be found in the :ref:`auth`. + +Concept: API +------------ + +* EC2 +* OpenStack / Rackspace + + +Concept: Networking +------------------- + +Nova has a concept of Fixed Ips and Floating ips. Fixed ips are assigned to an instance on creation and stay the same until the instance is explicitly terminated. Floating ips are ip addresses that can be dynamically associated with an instance. This address can be disassociated and associated with another instance at any time. + +There are multiple strategies available for implementing fixed ips: + +Flat Mode +~~~~~~~~~ + +The simplest networking mode. Each instance receives a fixed ip from the pool. All instances are attached to the same bridge (br100) by default. The bridge must be configured manually. The networking configuration is injected into the instance before it is booted. Note that this currently only works on linux-style systems that keep networking configuration in /etc/network/interfaces. + +Flat DHCP Mode +~~~~~~~~~~~~~~ + +This is similar to the flat mode, in that all instances are attached to the same bridge. In this mode nova does a bit more configuration, it will attempt to bridge into an ethernet device (eth0 by default). It will also run dnsmasq as a dhcpserver listening on this bridge. Instances receive their fixed ips by doing a dhcpdiscover. + +VLAN DHCP Mode +~~~~~~~~~~~~~~ + +This is the default networking mode and supports the most features. For multiple machine installation, it requires a switch that supports host-managed vlan tagging. In this mode, nova will create a vlan and bridge for each project. The project gets a range of private ips that are only accessible from inside the vlan. In order for a user to access the instances in their project, a special vpn instance (code named :ref:`cloudpipe `) needs to be created. Nova generates a certificate and key for the user to access the vpn and starts the vpn automatically. More information on cloudpipe can be found :ref:`here `. + +The following diagram illustrates how the communication that occurs between the vlan (the dashed box) and the public internet (represented by the two clouds) + +.. image:: /images/cloudpipe.png + :width: 100% + +.. + +Concept: Binaries +----------------- + +Nova is implemented by a number of related binaries. These binaries can run on the same machine or many machines. A detailed description of each binary is given in the :ref:`binaries section ` of the developer guide. + +.. _manage_usage: + +Concept: nova-manage +-------------------- + +The nova-manage command is used to perform many essential functions for +administration and ongoing maintenance of nova, such as user creation, +vpn management, and much more. + +See doc:`nova.manage` in the Administration Guide for more details. + + +Concept: Flags +-------------- + +python-gflags + + +Concept: Plugins +---------------- + +* Managers/Drivers: utils.import_object from string flag +* virt/connections: conditional loading from string flag +* db: LazyPluggable via string flag +* auth_manager: utils.import_class based on string flag +* Volumes: moving to pluggable driver instead of manager +* Network: pluggable managers +* Compute: same driver used, but pluggable at connection + + +Concept: IPC/RPC +---------------- + +Nova utilizes the RabbitMQ implementation of the AMQP messaging standard for performing communication between the various nova services. This message queuing service is used for both local and remote communication because Nova is designed so that there is no requirement that any of the services exist on the same physical machine. RabbitMQ in particular is very robust and provides the efficiency and reliability that Nova needs. More information about RabbitMQ can be found at http://www.rabbitmq.com/. + +Concept: Fakes +-------------- + +* auth +* ldap + + +Concept: Scheduler +------------------ + +* simple +* random + + +Concept: Security Groups +------------------------ + +Security groups + + +Concept: Certificate Authority +------------------------------ + +Nova does a small amount of certificate management. These certificates are used for :ref:`project vpns ` and decrypting bundled images. + + +Concept: Images +--------------- + +* launching +* bundling diff --git a/doc/build/html/_sources/object.model.txt b/doc/build/html/_sources/object.model.txt new file mode 100644 index 000000000000..c8d4df7367fe --- /dev/null +++ b/doc/build/html/_sources/object.model.txt @@ -0,0 +1,53 @@ +Object Model +============ + +.. todo:: Add brief description for core models + +.. graphviz:: + + digraph foo { + graph [rankdir="LR"]; node [fontsize=9 shape=box]; + Instances -> "Public IPs" [arrowhead=crow]; + Instances -> "Security Groups" [arrowhead=crow]; + Users -> Projects [arrowhead=crow arrowtail=crow dir=both]; + Users -> Keys [arrowhead=crow]; + Instances -> Volumes [arrowhead=crow]; + Projects -> "Public IPs" [arrowhead=crow]; + Projects -> Instances [arrowhead=crow]; + Projects -> Volumes [arrowhead=crow]; + Projects -> Images [arrowhead=crow]; + Images -> Instances [arrowhead=crow]; + Projects -> "Security Groups" [arrowhead=crow]; + "Security Groups" -> Rules [arrowhead=crow]; + } + + +Users +----- + +Projects +-------- + + +Images +------ + + +Instances +--------- + + +Volumes +------- + + +Security Groups +--------------- + + +VLANs +----- + + +IP Addresses +------------ diff --git a/doc/build/html/_sources/quickstart.txt b/doc/build/html/_sources/quickstart.txt new file mode 100644 index 000000000000..ae2b64d8a51d --- /dev/null +++ b/doc/build/html/_sources/quickstart.txt @@ -0,0 +1,178 @@ +.. + Copyright 2010 United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All Rights Reserved. + + 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. + +Nova Quickstart +=============== + +.. todo:: + P1 (this is one example of how to use priority syntax) + * Document the assumptions about pluggable interfaces (sqlite3 instead of + mysql, etc) (todd) + * Document env vars that can change things (USE_MYSQL, HOST_IP) (todd) + +Recommended System Configuration +-------------------------------- + +Although Nova can be run on a variety of system architectures, for most users the following will be simplest: + +* Ubuntu Lucid +* 10GB Hard Disk Space +* 512MB RAM + +For development, Nova can run from within a VM. + + +Getting the Code +---------------- + +Nova is hosted on launchpad. You can get the code with the following command + +:: + + bzr clone lp:nova + +The `contrib/nova.sh` file in the source distribution is a script that +will quickly set up nova to run on a single machine. It is tested against +Ubuntu only, but other distributions are forthcoming. + +Environment Variables +--------------------- + +By tweaking the environment that nova.sh run in, you can build slightly +different configurations (though for more complex setups you should see +:doc:`/adminguide/getting.started` and :doc:`/adminguide/multi.node.install`). + +* HOST_IP + * Default: address of first interface from the ifconfig command + * Values: 127.0.0.1, or any other valid address + +TEST +~~~~ + +**Default**: 0 +**Values**: 1, run tests after checkout and initial setup + +USE_MYSQL +~~~~~~~~~ + +**Default**: 0, use sqlite3 +**Values**: 1, use mysql instead of sqlite3 + +MYSQL_PASS +~~~~~~~~~~ + +Only useful if $USE_MYSQL=1. + +**Default**: nova +**Values**: value of root password for mysql + +USE_LDAP +~~~~~~~~ + +**Default**: 0, use :mod:`nova.auth.dbdriver` +**Values**: 1, use :mod:`nova.auth.ldapdriver` + +LIBVIRT_TYPE +~~~~~~~~~~~~ + +**Default**: qemu +**Values**: uml, kvm + +Usage +----- + +Unless you want to spend a lot of time fiddling with permissions and sudoers, +you should probably run nova as root. + +:: + + sudo -i + +If you are concerned about security, nova runs just fine inside a virtual +machine. + +Use the script to install and run the current trunk. You can also specify a +specific branch by putting `lp:~someone/nova/some-branch` after the branch +command + +:: + + ./nova.sh branch + ./nova.sh install + ./nova.sh run + +The run command will drop you into a screen session with all of the workers +running in different windows You can use eucatools to run commands against the +cloud. + +:: + + euca-add-keypair test > test.pem + euca-run-instances -k test -t m1.tiny ami-tiny + euca-describe-instances + +To see output from the various workers, switch screen windows + +:: + + " + +will give you a list of running windows. + +When the instance is running, you should be able to ssh to it. + +:: + + chmod 600 test.pem + ssh -i test.pem root@10.0.0.3 + +When you exit screen + +:: + + + +nova will terminate. It may take a while for nova to finish cleaning up. If +you exit the process before it is done because there were some problems in your +build, you may have to clean up the nova processes manually. If you had any +instances running, you can attempt to kill them through the api: + +:: + + ./nova.sh terminate + +Then you can destroy the screen: + +:: + + ./nova.sh clean + +If things get particularly messed up, you might need to do some more intense +cleanup. Be careful, the following command will manually destroy all runnning +virsh instances and attempt to delete all vlans and bridges. + +:: + + ./nova.sh scrub + +You can edit files in the install directory or do a bzr pull to pick up new versions. You only need to do + +:: + + ./nova.sh run + +to run nova after the first install. The database should be cleaned up on each run. \ No newline at end of file diff --git a/doc/build/html/_sources/service.architecture.txt b/doc/build/html/_sources/service.architecture.txt new file mode 100644 index 000000000000..28a32bec6b56 --- /dev/null +++ b/doc/build/html/_sources/service.architecture.txt @@ -0,0 +1,60 @@ +Service Architecture +==================== + +Nova’s Cloud Fabric is composed of the following major components: + +* API Server +* Message Queue +* Compute Worker +* Network Controller +* Volume Worker +* Scheduler +* Image Store + + +.. image:: /images/fabric.png + :width: 790 + +API Server +-------------------------------------------------- +At the heart of the cloud framework is an API Server. This API Server makes command and control of the hypervisor, storage, and networking programmatically available to users in realization of the definition of cloud computing. + +The API endpoints are basic http web services which handle authentication, authorization, and basic command and control functions using various API interfaces under the Amazon, Rackspace, and related models. This enables API compatibility with multiple existing tool sets created for interaction with offerings from other vendors. This broad compatibility prevents vendor lock-in. + +Message Queue +-------------------------------------------------- +A messaging queue brokers the interaction between compute nodes (processing), volumes (block storage), the networking controllers (software which controls network infrastructure), API endpoints, the scheduler (determines which physical hardware to allocate to a virtual resource), and similar components. Communication to and from the cloud controller is by HTTP requests through multiple API endpoints. + +A typical message passing event begins with the API server receiving a request from a user. The API server authenticates the user and ensures that the user is permitted to issue the subject command. Availability of objects implicated in the request is evaluated and, if available, the request is routed to the queuing engine for the relevant workers. Workers continually listen to the queue based on their role, and occasionally their type hostname. When such listening produces a work request, the worker takes assignment of the task and begins its execution. Upon completion, a response is dispatched to the queue which is received by the API server and relayed to the originating user. Database entries are queried, added, or removed as necessary throughout the process. + +Compute Worker +-------------------------------------------------- +Compute workers manage computing instances on host machines. Through the API, commands are dispatched to compute workers to: + +* Run instances +* Terminate instances +* Reboot instances +* Attach volumes +* Detach volumes +* Get console output + +Network Controller +-------------------------------------------------- +The Network Controller manages the networking resources on host machines. The API server dispatches commands through the message queue, which are subsequently processed by Network Controllers. Specific operations include: + +* Allocate Fixed IP Addresses +* Configuring VLANs for projects +* Configuring networks for compute nodes + +Volume Workers +-------------------------------------------------- +Volume Workers interact with iSCSI storage to manage LVM-based instance volumes. Specific functions include: + +* Create Volumes +* Delete Volumes +* Establish Compute volumes + +Volumes may easily be transferred between instances, but may be attached to only a single instance at a time. + + +.. todo:: P2: image store description diff --git a/doc/build/html/_static/basic.css b/doc/build/html/_static/basic.css new file mode 100644 index 000000000000..69f30d4fbe19 --- /dev/null +++ b/doc/build/html/_static/basic.css @@ -0,0 +1,509 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +.align-left { + text-align: left; +} + +.align-center { + clear: both; + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} diff --git a/doc/build/html/_static/contents.png b/doc/build/html/_static/contents.png new file mode 100644 index 000000000000..7fb82154a174 Binary files /dev/null and b/doc/build/html/_static/contents.png differ diff --git a/doc/build/html/_static/doctools.js b/doc/build/html/_static/doctools.js new file mode 100644 index 000000000000..eeea95ea5ffd --- /dev/null +++ b/doc/build/html/_static/doctools.js @@ -0,0 +1,247 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for all documentation. + * + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +} + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * small function to check if an array contains + * a given item. + */ +jQuery.contains = function(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == item) + return true; + } + return false; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('.sidebar .this-page-menu')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/doc/build/html/_static/file.png b/doc/build/html/_static/file.png new file mode 100644 index 000000000000..d18082e397e7 Binary files /dev/null and b/doc/build/html/_static/file.png differ diff --git a/doc/build/html/_static/jquery.js b/doc/build/html/_static/jquery.js new file mode 100644 index 000000000000..7c2430802337 --- /dev/null +++ b/doc/build/html/_static/jquery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/doc/build/html/_static/jquery.tweet.js b/doc/build/html/_static/jquery.tweet.js new file mode 100644 index 000000000000..c93fea8768a8 --- /dev/null +++ b/doc/build/html/_static/jquery.tweet.js @@ -0,0 +1,154 @@ +(function($) { + + $.fn.tweet = function(o){ + var s = { + username: ["seaofclouds"], // [string] required, unless you want to display our tweets. :) it can be an array, just do ["username1","username2","etc"] + list: null, //[string] optional name of list belonging to username + avatar_size: null, // [integer] height and width of avatar if displayed (48px max) + count: 3, // [integer] how many tweets to display? + intro_text: null, // [string] do you want text BEFORE your your tweets? + outro_text: null, // [string] do you want text AFTER your tweets? + join_text: null, // [string] optional text in between date and tweet, try setting to "auto" + auto_join_text_default: "i said,", // [string] auto text for non verb: "i said" bullocks + auto_join_text_ed: "i", // [string] auto text for past tense: "i" surfed + auto_join_text_ing: "i am", // [string] auto tense for present tense: "i was" surfing + auto_join_text_reply: "i replied to", // [string] auto tense for replies: "i replied to" @someone "with" + auto_join_text_url: "i was looking at", // [string] auto tense for urls: "i was looking at" http:... + loading_text: null, // [string] optional loading text, displayed while tweets load + query: null // [string] optional search query + }; + + if(o) $.extend(s, o); + + $.fn.extend({ + linkUrl: function() { + var returning = []; + var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi; + this.each(function() { + returning.push(this.replace(regexp,"$1")); + }); + return $(returning); + }, + linkUser: function() { + var returning = []; + var regexp = /[\@]+([A-Za-z0-9-_]+)/gi; + this.each(function() { + returning.push(this.replace(regexp,"@$1")); + }); + return $(returning); + }, + linkHash: function() { + var returning = []; + var regexp = / [\#]+([A-Za-z0-9-_]+)/gi; + this.each(function() { + returning.push(this.replace(regexp, ' #$1')); + }); + return $(returning); + }, + capAwesome: function() { + var returning = []; + this.each(function() { + returning.push(this.replace(/\b(awesome)\b/gi, '$1')); + }); + return $(returning); + }, + capEpic: function() { + var returning = []; + this.each(function() { + returning.push(this.replace(/\b(epic)\b/gi, '$1')); + }); + return $(returning); + }, + makeHeart: function() { + var returning = []; + this.each(function() { + returning.push(this.replace(/(<)+[3]/gi, "")); + }); + return $(returning); + } + }); + + function relative_time(time_value) { + var parsed_date = Date.parse(time_value); + var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); + var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); + var pluralize = function (singular, n) { + return '' + n + ' ' + singular + (n == 1 ? '' : 's'); + }; + if(delta < 60) { + return 'less than a minute ago'; + } else if(delta < (45*60)) { + return 'about ' + pluralize("minute", parseInt(delta / 60)) + ' ago'; + } else if(delta < (24*60*60)) { + return 'about ' + pluralize("hour", parseInt(delta / 3600)) + ' ago'; + } else { + return 'about ' + pluralize("day", parseInt(delta / 86400)) + ' ago'; + } + } + + function build_url() { + var proto = ('https:' == document.location.protocol ? 'https:' : 'http:'); + if (s.list) { + return proto+"//api.twitter.com/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?"; + } else if (s.query == null && s.username.length == 1) { + return proto+'//twitter.com/status/user_timeline/'+s.username[0]+'.json?count='+s.count+'&callback=?'; + } else { + var query = (s.query || 'from:'+s.username.join('%20OR%20from:')); + return proto+'//search.twitter.com/search.json?&q='+query+'&rpp='+s.count+'&callback=?'; + } + } + + return this.each(function(){ + var list = $('
    ').appendTo(this); + var intro = '

    '+s.intro_text+'

    '; + var outro = '

    '+s.outro_text+'

    '; + var loading = $('

    '+s.loading_text+'

    '); + + if(typeof(s.username) == "string"){ + s.username = [s.username]; + } + + if (s.loading_text) $(this).append(loading); + $.getJSON(build_url(), function(data){ + if (s.loading_text) loading.remove(); + if (s.intro_text) list.before(intro); + $.each((data.results || data), function(i,item){ + // auto join text based on verb tense and content + if (s.join_text == "auto") { + if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) { + var join_text = s.auto_join_text_reply; + } else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) { + var join_text = s.auto_join_text_url; + } else if (item.text.match(/^((\w+ed)|just) .*/im)) { + var join_text = s.auto_join_text_ed; + } else if (item.text.match(/^(\w*ing) .*/i)) { + var join_text = s.auto_join_text_ing; + } else { + var join_text = s.auto_join_text_default; + } + } else { + var join_text = s.join_text; + }; + + var from_user = item.from_user || item.user.screen_name; + var profile_image_url = item.profile_image_url || item.user.profile_image_url; + var join_template = ' '+join_text+' '; + var join = ((s.join_text) ? join_template : ' '); + var avatar_template = ''+from_user+'\'s avatar'; + var avatar = (s.avatar_size ? avatar_template : ''); + var date = ''+relative_time(item.created_at)+''; + var text = '' +$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+ ''; + + // until we create a template option, arrange the items below to alter a tweet's display. + list.append('
  • ' + avatar + date + join + text + '
  • '); + + list.children('li:first').addClass('tweet_first'); + list.children('li:odd').addClass('tweet_even'); + list.children('li:even').addClass('tweet_odd'); + }); + if (s.outro_text) list.after(outro); + }); + + }); + }; +})(jQuery); \ No newline at end of file diff --git a/doc/build/html/_static/minus.png b/doc/build/html/_static/minus.png new file mode 100644 index 000000000000..da1c5620d10c Binary files /dev/null and b/doc/build/html/_static/minus.png differ diff --git a/doc/build/html/_static/navigation.png b/doc/build/html/_static/navigation.png new file mode 100644 index 000000000000..1081dc1439fb Binary files /dev/null and b/doc/build/html/_static/navigation.png differ diff --git a/doc/build/html/_static/plus.png b/doc/build/html/_static/plus.png new file mode 100644 index 000000000000..b3cb37425ea6 Binary files /dev/null and b/doc/build/html/_static/plus.png differ diff --git a/doc/build/html/_static/pygments.css b/doc/build/html/_static/pygments.css new file mode 100644 index 000000000000..1a14f2ae1abd --- /dev/null +++ b/doc/build/html/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #303030 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/doc/build/html/_static/searchtools.js b/doc/build/html/_static/searchtools.js new file mode 100644 index 000000000000..5cbfe004b7aa --- /dev/null +++ b/doc/build/html/_static/searchtools.js @@ -0,0 +1,518 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, hlwords is the list of normal, unstemmed + * words. the first one is used to find the occurance, the + * latter for highlighting it. + */ + +jQuery.makeSearchSummary = function(text, keywords, hlwords) { + var textLower = text.toLowerCase(); + var start = 0; + $.each(keywords, function() { + var i = textLower.indexOf(this.toLowerCase()); + if (i > -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('
    ').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlighted'); + }); + return rv; +} + +/** + * Porter Stemmer + */ +var PorterStemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, success: null, + dataType: "script", cache: true}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (var i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

    ' + _('Searching') + '

    ').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

    ').appendTo(this.out); + this.output = $('