{"body":"#!/usr/bin/env python\n#\n#  Copyright (c) 2017 SWITCH http://www.switch.ch\n#\n#  Licensed under the Apache License, Version 2.0 (the \"License\");\n#  you may not use this file except in compliance with the License.\n#  You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n#  Unless required by applicable law or agreed to in writing, software\n#  distributed under the License is distributed on an \"AS IS\" BASIS,\n#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n#  See the License for the specific language governing permissions and\n#  limitations under the License.\n\n# Author: Saverio Proto <saverio.proto@switch.ch>\n\n\"\"\"\nExample usage:\npython floatingips-quota.py -d\npython floatingips-quota.py\n\"\"\"\n\nimport os\nimport sys\nsys.path.append('../lib')\n\nimport argparse\nimport openstackapi\nimport keystoneclient\nimport time\n\ndef get_environ(key, verbose=False):\n    if key not in os.environ:\n        print \"ERROR:\", key, \"not define in environment\"\n        sys.exit(1)\n    if verbose:\n        if 'password' in key.lower():\n            key_value = '*' * len(os.environ[key])\n        else:\n            key_value = os.environ[key]\n        print \"{}: {}\".format(key, key_value)\n    return os.environ[key]\n\n\ndef main():\n    \"\"\"\n    Set floatingip quota as instance quota\n    \"\"\"\n    parser = argparse.ArgumentParser(\n        description=\"Sync quotas\")\n    parser.add_argument('-d', '--dry-run', help='dry run', action=\"store_true\",required=False)\n    parser.add_argument('-v', '--verbose', help='verbose', action='store_true')\n    args = parser.parse_args()\n\n    # get OS_* environment variables\n    os_auth_url = get_environ('OS_AUTH_URL', args.verbose)\n    os_username = get_environ('OS_USERNAME', args.verbose)\n    os_password = get_environ('OS_PASSWORD', args.verbose)\n    os_tenant_name = get_environ('OS_TENANT_NAME', args.verbose)\n    os_region_name = get_environ('OS_REGION_NAME', args.verbose)\n\n\n    api = openstackapi.OpenstackAPI(os_auth_url, os_username, os_password, os_project_name=os_tenant_name)\n    neutron = api.neutron(os_region_name)\n    nova = api.nova(os_region_name)\n    projects = api.keystone.projects.list()\n    for p in projects:\n        quota = nova.quotas.get(p.id).instances\n        command = \"neutron quota-update --floatingip %d --tenant-id %s\" % (quota,p.id)\n        if args.dry_run:\n            print command\n        else:\n            os.system(command)\n\nif __name__ == '__main__':\n    main()","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/za9EdWoK","modified":1490291338,"id":"za9EdWoK","size":2479,"lines":78,"own_paste":false,"theme":"","date":1490291338}