begin adding port support, catch OSError from Flask
This commit is contained in:
		
					parent
					
						
							
								29dfacfadb
							
						
					
				
			
			
				commit
				
					
						71c3f9d978
					
				
			
		
					 2 changed files with 36 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -34,6 +34,8 @@ if __name__ == '__main__':
 | 
			
		|||
    subparsers = arg_parser.add_subparsers(dest="command")
 | 
			
		||||
 | 
			
		||||
    api_parser = subparsers.add_parser("api", parents=[parent_parser])
 | 
			
		||||
    api_parser.add_argument("--port", "-p")
 | 
			
		||||
 | 
			
		||||
    host_parser = subparsers.add_parser("host")
 | 
			
		||||
    host_parser.add_argument("--hostname", required=True)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ from uncloud.shared import shared
 | 
			
		|||
 | 
			
		||||
from . import schemas
 | 
			
		||||
from .helper import generate_mac, mac2ipv6
 | 
			
		||||
 | 
			
		||||
from uncloud import UncloudException
 | 
			
		||||
 | 
			
		||||
logger = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -561,29 +561,42 @@ api.add_resource(ListHost, "/host/list")
 | 
			
		|||
api.add_resource(CreateNetwork, "/network/create")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main(debug=False):
 | 
			
		||||
    image_stores = list(
 | 
			
		||||
        shared.etcd_client.get_prefix(
 | 
			
		||||
            settings["etcd"]["image_store_prefix"], value_in_json=True
 | 
			
		||||
def main(debug=False, port=None):
 | 
			
		||||
    try:
 | 
			
		||||
        image_stores = list(
 | 
			
		||||
            shared.etcd_client.get_prefix(
 | 
			
		||||
                settings["etcd"]["image_store_prefix"], value_in_json=True
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
    )
 | 
			
		||||
    if not image_stores:
 | 
			
		||||
        data = {
 | 
			
		||||
            "is_public": True,
 | 
			
		||||
            "type": "ceph",
 | 
			
		||||
            "name": "images",
 | 
			
		||||
            "description": "first ever public image-store",
 | 
			
		||||
            "attributes": {"list": [], "key": [], "pool": "images"},
 | 
			
		||||
        }
 | 
			
		||||
    except KeyError:
 | 
			
		||||
        image_stores = False
 | 
			
		||||
 | 
			
		||||
        shared.etcd_client.put(
 | 
			
		||||
            join_path(
 | 
			
		||||
                settings["etcd"]["image_store_prefix"], uuid4().hex
 | 
			
		||||
            ),
 | 
			
		||||
            json.dumps(data),
 | 
			
		||||
        )
 | 
			
		||||
    # Do not inject default values that might be very wrong
 | 
			
		||||
    # fail when required, not before
 | 
			
		||||
    #
 | 
			
		||||
    # if not image_stores:
 | 
			
		||||
    #     data = {
 | 
			
		||||
    #         "is_public": True,
 | 
			
		||||
    #         "type": "ceph",
 | 
			
		||||
    #         "name": "images",
 | 
			
		||||
    #         "description": "first ever public image-store",
 | 
			
		||||
    #         "attributes": {"list": [], "key": [], "pool": "images"},
 | 
			
		||||
    #     }
 | 
			
		||||
 | 
			
		||||
    app.run(host="::", debug=False)
 | 
			
		||||
    #     shared.etcd_client.put(
 | 
			
		||||
    #         join_path(
 | 
			
		||||
    #             settings["etcd"]["image_store_prefix"], uuid4().hex
 | 
			
		||||
    #         ),
 | 
			
		||||
    #         json.dumps(data),
 | 
			
		||||
    #     )
 | 
			
		||||
 | 
			
		||||
    if port:
 | 
			
		||||
        app_port = port
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        app.run(host="::", debug=False)
 | 
			
		||||
    except OSError as e:
 | 
			
		||||
        raise UncloudException("Failed to start Flask: {}".format(e))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue