webgui ask for username and password

Hi,

I have installed my MongoDB instance on a VM. Until now I used only one Mongo DB : the ‘fireworks’ DB.

Now I want to have 2 separated launchpads. In order to achieve that, I created a new DB called fireworks_test, with a new user :

$ mongo

use admin

switched to db admin

db.auth(‘a2s_admin’, ‘XXXXXXXXXX’)

1

use fireworks_test

db.createUser( { user: “a2s_FW”,

pwd: “YYYYYYY”,

roles: [ { role: “dbOwner”, db: “fireworks_test” },

“readWrite”] }

)

Successfully added user: {

“user” : “a2s_FW”,

“roles” : [

{

“role” : “dbOwner”,

“db” : “fireworks_test”

},

“readWrite”

]

}

I also created a new my_launchpad_test.yaml file :

host: 192.168.7.247

port: 27017

name: fireworks_test

username: a2s_FW

password: YYYYYYY
logdir: null

strm_lvl: INFO

to launch the webgui for the default ‘fireworks’ DB, I use :

sudo lpad webgui -s --port 80 --host 192.168.7.247 &

so, to launch the webgui for the new DB, I use :

sudo lpad -l /path_to_my_config_dir/my_launchpad_test.yaml webgui -s --port 8080 --host 192.168.7.247 &

the port are well opened in my firewall :

$ sudo iptables-save | grep 80

-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

-A IN_public_allow -p tcp -m tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT

and I can check that the port are listen :

$ sudo netstat -lptn

tcp 0 0 192.168.7.247:8080 0.0.0.0:* LISTEN 24790/python3.4

tcp 0 0 192.168.7.247:80 0.0.0.0:* LISTEN 12784/python3.4

I set up 2 ssh tunnels to tunnel to my local ports to the VM’s ones rebounding through hpc (which has a routable address) :

ssh -N -L 8080:192.168.7.247:80 hpc
ssh -N -L 8081:192.168.7.247:8080 hpc

Everything is OK and I can contact the 2 webserver … but :

the old one (http://localhost:8080) never asked for authentification and works nice whereas the new one (http://localhost:8081) pop up an authentification windows and end up with this message :

Could not verify your access level for that URL. You have to login with proper credentials

So my questions are :

Why does it asks for auth ?
Which are the credentials I am supposed to enter (tried several ones without success) ?

Best regards,
David

Addendum :

I stop all webgui and try to only set one for the new DB on the same channels thant for the first DB :

sudo lpad -l /blablabla/my_launchpad_test.yaml webgui -s --port 80 --host 192.168.7.247

I should work as before, but with the new DB instead …

but it displays the information of the old ‘fireworks’ DN instead of ‘fireworks_test’ DB

I don’t know what is going wrong with webgui, because it works nice using only the lpad command :

$ lpad -l my_launchpad_test.yaml report

···

Stats on fws


There are no stats to display for the chosen time period.

$ lpad -l my_launchpad.yaml report

Stats on fws


Stats for time-period 2018-11-27

=================================

ARCHIVED : 0

FIZZLED : 2

DEFUSED : 0

PAUSED : 0

WAITING : 0

READY : 0

RESERVED : 0

RUNNING : 0

COMPLETED : 0

total : 2

C/(C+F) : 0

Stats for time-period 2018-11-26

=================================

ARCHIVED : 0

FIZZLED : 99

DEFUSED : 0

PAUSED : 0

WAITING : 54

READY : 0

RESERVED : 0

RUNNING : 0

COMPLETED : 480

total : 633

C/(C+F) : 82.89999999999999

-> it uses well the DB set in the yaml config file …

Le mercredi 28 novembre 2018 13:22:31 UTC+1, [email protected] a écrit :

Hi,

I have installed my MongoDB instance on a VM. Until now I used only one Mongo DB : the ‘fireworks’ DB.

Now I want to have 2 separated launchpads. In order to achieve that, I created a new DB called fireworks_test, with a new user :

$ mongo

use admin

switched to db admin

db.auth(‘a2s_admin’, ‘XXXXXXXXXX’)

1

use fireworks_test

db.createUser( { user: “a2s_FW”,

pwd: “YYYYYYY”,

roles: [ { role: “dbOwner”, db: “fireworks_test” },

“readWrite”] }

)

Successfully added user: {

“user” : “a2s_FW”,

“roles” : [

{

“role” : “dbOwner”,

“db” : “fireworks_test”

},

“readWrite”

]

$ sudo netstat -lptn

tcp 0 0 192.168.7.247:8080 0.0.0.0:* LISTEN 24790/python3.4

tcp 0 0 192.168.7.247:80 0.0.0.0:* LISTEN 12784/python3.4

}

I also created a new my_launchpad_test.yaml file :

host: 192.168.7.247

port: 27017

name: fireworks_test

username: a2s_FW

password: YYYYYYY
logdir: null

strm_lvl: INFO

to launch the webgui for the default ‘fireworks’ DB, I use :

sudo lpad webgui -s --port 80 --host 192.168.7.247 &

so, to launch the webgui for the new DB, I use :

sudo lpad -l /path_to_my_config_dir/my_launchpad_test.yaml webgui -s --port 8080 --host 192.168.7.247 &

the port are well opened in my firewall :

$ sudo iptables-save | grep 80

-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

-A IN_public_allow -p tcp -m tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT

and I can check that the port are listen :

I set up 2 ssh tunnels to tunnel to my local ports to the VM’s ones rebounding through hpc (which has a routable address) :

ssh -N -L 8080:192.168.7.247:80 hpc
ssh -N -L 8081:192.168.7.247:8080 hpc

Everything is OK and I can contact the 2 webserver … but :

the old one (http://localhost:8080) never asked for authentification and works nice whereas the new one (http://localhost:8081) pop up an authentification windows and end up with this message :

Could not verify your access level for that URL. You have to login with proper credentials

So my questions are :

Why does it asks for auth ?
Which are the credentials I am supposed to enter (tried several ones without success) ?

Best regards,
David

The Flask app (webgui) uses a slightly different method to pass the launchpad information, since there is no easy way that we know of to pass the command line argument about the launchpad into the Flask app.

As a workaround, we put the launchpad information that the user provides into an environment variable called FWDB_CONFIG. The Flask app searches for that environment variable and uses it to load the appropriate launchpad. You can search for the phrase FWDB_CONFIG to see the various parts of the code relating to this.

If you are launching two different web guis with different credentials, can you try using two different command line shells (one for each web gui launch)? Maybe this will prevent one environment variable conflicting with another.

···

Best,
Anubhav

Hi ajain,

Thanks for the quick answer.

Well I’m not very familiar with the design patterns you use … so I have searched for FWDB_CONFIG in fireworks package :

[[email protected] fireworks]$ trouve FWDB_CONFIG (-> grep all files in subdirectories)

******** in file <./scripts/pycache/lpad_run.cpython-36.pyc> ********

Fichier binaire ./scripts/pycache/lpad_run.cpython-36.pyc correspondant

******** in file <./scripts/lpad_run.py> ********

501: os.environ[“FWDB_CONFIG”] = json.dumps(get_lp(args).to_dict())

******** in file <./flask_site/pycache/app.cpython-36.pyc> ********

Fichier binaire ./flask_site/pycache/app.cpython-36.pyc correspondant

******** in file <./flask_site/app.py> ********

25:lp = LaunchPad.from_dict(json.loads(os.environ[“FWDB_CONFIG”]))

376: json.loads(os.environ[“FWDB_CONFIG”]))

… and used a debugger to find the content of this FWDB_CONFIG.

Then

-> I removed all binary files *.pyc as they may act as a cache
-> I exported an A2S_FWDB_CONFIG env var initialized to use the 2nd DB : {“host”: “localhost”, “port”: 27017, “name”: “fireworks_test”, “username”: “a2s_FW”, “password”: “YYYYY”, “logdir”: null, “strm_lvl”: “INFO”, “user_indices”: [], “wf_user_indices”: [], “ssl”: false, “ssl_ca_certs”: null, “ssl_certfile”: null, “ssl_keyfile”: null, “ssl_pem_passphrase”: null}

-> I slightly changed the code to use A2S_FWDB_CONFIG:

$ trouve FWDB_CONFIG

******** in file <./flask_site/app.py> ********

25:lp = LaunchPad.from_dict(json.loads(os.environ[“A2S_FWDB_CONFIG”]))

376: json.loads(os.environ[“A2S_FWDB_CONFIG”]))

******** in file <./scripts/lpad_run.py> ********

501: #os.environ[“FWDB_CONFIG”] = json.dumps(get_lp(args).to_dict())

502: os.environ[“FWDB_CONFIG”] = os.environ[“A2S_FWDB_CONFIG”]

This way FWDB_CONFIG is always initialized with the content of A2S_FWDB_CONFIG and A2S_FWDB_CONFIG is never overwritten.

I launch only one webgui, just to try to reach the new DB fireworks_test …

$sudo lpad webgui -s --port 8080 --host 192.168.7.247

-> the page is displayed, but the DB used is still the default ‘fireworks’ DB that is reached

sudo lpad -l /…/my_launchpad_test.yaml webgui -s --port 8080 --host 192.168.7.247 &

-> same behavior.

I don’t understand why it behaves like this … maybe the default db name is hardcoded somewhere …

$ trouve “‘fireworks’”

******** in file <./core/launchpad.py> ********

109: def init(self, host=‘localhost’, port=27017, name=‘fireworks’, username=None, password=None,

121: user_indices (list): list of ‘fireworks’ collection indexes to be built

720: self.db.command({‘compact’: ‘fireworks’})

1320: Insert the fireworks to the ‘fireworks’ collection.

******** in file <./flask_site/app.py> ********

257: pagination = Pagination(page=page, total=fw_count, record_name=‘fireworks’,

******** in file <./utilities/filepad.py> ********

30: def init(self, host=‘localhost’, port=27017, database=‘fireworks’, username=None,

******** in file <./scripts/lpad_run.py> ********

602: for coll in [‘launches’, ‘tasks’, ‘fireworks’, ‘workflows’]:

-> So i tried to change default name value in ./core/launchpad.py, but it has changed nothing.

In conclusion I think the simplest way to achieve what I want to do is to run a second VM with it’s own MongoDB server holding a DB named ‘fireworks’.

Best regards,
David

···

Le mercredi 28 novembre 2018 15:41:49 UTC+1, ajain a écrit :

The Flask app (webgui) uses a slightly different method to pass the launchpad information, since there is no easy way that we know of to pass the command line argument about the launchpad into the Flask app.

As a workaround, we put the launchpad information that the user provides into an environment variable called FWDB_CONFIG. The Flask app searches for that environment variable and uses it to load the appropriate launchpad. You can search for the phrase FWDB_CONFIG to see the various parts of the code relating to this.

If you are launching two different web guis with different credentials, can you try using two different command line shells (one for each web gui launch)? Maybe this will prevent one environment variable conflicting with another.

On Wed, Nov 28, 2018 at 7:45 AM [email protected] wrote:

Addendum :

I stop all webgui and try to only set one for the new DB on the same channels thant for the first DB :

sudo lpad -l /blablabla/my_launchpad_test.yaml webgui -s --port 80 --host 192.168.7.247

I should work as before, but with the new DB instead …

but it displays the information of the old ‘fireworks’ DN instead of ‘fireworks_test’ DB

I don’t know what is going wrong with webgui, because it works nice using only the lpad command :

$ lpad -l my_launchpad_test.yaml report


Stats on fws


There are no stats to display for the chosen time period.

$ lpad -l my_launchpad.yaml report

Stats on fws


Stats for time-period 2018-11-27

=================================

ARCHIVED : 0

FIZZLED : 2

DEFUSED : 0

PAUSED : 0

WAITING : 0

READY : 0

RESERVED : 0

RUNNING : 0

COMPLETED : 0

total : 2

C/(C+F) : 0

Stats for time-period 2018-11-26

=================================

ARCHIVED : 0

FIZZLED : 99

DEFUSED : 0

PAUSED : 0

WAITING : 54

READY : 0

RESERVED : 0

RUNNING : 0

COMPLETED : 480

total : 633

C/(C+F) : 82.89999999999999

-> it uses well the DB set in the yaml config file …

Le mercredi 28 novembre 2018 13:22:31 UTC+1, [email protected] a écrit :

Hi,

I have installed my MongoDB instance on a VM. Until now I used only one Mongo DB : the ‘fireworks’ DB.

Now I want to have 2 separated launchpads. In order to achieve that, I created a new DB called fireworks_test, with a new user :

$ mongo

use admin

switched to db admin

db.auth(‘a2s_admin’, ‘XXXXXXXXXX’)

1

use fireworks_test

db.createUser( { user: “a2s_FW”,

pwd: “YYYYYYY”,

roles: [ { role: “dbOwner”, db: “fireworks_test” },

“readWrite”] }

)

Successfully added user: {

“user” : “a2s_FW”,

“roles” : [

{

“role” : “dbOwner”,

“db” : “fireworks_test”

},

“readWrite”

]

$ sudo netstat -lptn

tcp 0 0 192.168.7.247:8080 0.0.0.0:* LISTEN 24790/python3.4

tcp 0 0 192.168.7.247:80 0.0.0.0:* LISTEN 12784/python3.4

}

I also created a new my_launchpad_test.yaml file :

host: 192.168.7.247

port: 27017

name: fireworks_test

username: a2s_FW

password: YYYYYYY
logdir: null

strm_lvl: INFO

to launch the webgui for the default ‘fireworks’ DB, I use :

sudo lpad webgui -s --port 80 --host 192.168.7.247 &

so, to launch the webgui for the new DB, I use :

sudo lpad -l /path_to_my_config_dir/my_launchpad_test.yaml webgui -s --port 8080 --host 192.168.7.247 &

the port are well opened in my firewall :

$ sudo iptables-save | grep 80

-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

-A IN_public_allow -p tcp -m tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT

and I can check that the port are listen :

I set up 2 ssh tunnels to tunnel to my local ports to the VM’s ones rebounding through hpc (which has a routable address) :

ssh -N -L 8080:192.168.7.247:80 hpc
ssh -N -L 8081:192.168.7.247:8080 hpc

Everything is OK and I can contact the 2 webserver … but :

the old one (http://localhost:8080) never asked for authentification and works nice whereas the new one (http://localhost:8081) pop up an authentification windows and end up with this message :

Could not verify your access level for that URL. You have to login with proper credentials

So my questions are :

Why does it asks for auth ?
Which are the credentials I am supposed to enter (tried several ones without success) ?

Best regards,
David

You received this message because you are subscribed to the Google Groups “fireworkflows” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

Visit this group at https://groups.google.com/group/fireworkflows.

For more options, visit https://groups.google.com/d/optout.


Best,
Anubhav

Hi David,

Thanks for the detailed response. I am just returning from travel with quite a large stack of things to work on upon returning. But, I will look into your list of hard-coded calls as soon as possible.

Note that from our side, we change the database name frequently (from “fireworks” to “fireworks_testing” or “production” or whatever) but we never change the collection names. Some of those hard-coded calls you point out refer to just the collection name being expected to be fireworks, and should still support different database names. I would expect problems if you change the collection names but not the database name.

Does the problem still occur if you just run a single GUI connecting to launchpad_test.yaml?

···

On Fri, Nov 30, 2018 at 5:22 AM [email protected] wrote:

Hi ajain,

Thanks for the quick answer.

Well I’m not very familiar with the design patterns you use … so I have searched for FWDB_CONFIG in fireworks package :

[[email protected] fireworks]$ trouve FWDB_CONFIG (-> grep all files in subdirectories)

******** in file <./scripts/pycache/lpad_run.cpython-36.pyc> ********

Fichier binaire ./scripts/pycache/lpad_run.cpython-36.pyc correspondant

******** in file <./scripts/lpad_run.py> ********

501: os.environ[“FWDB_CONFIG”] = json.dumps(get_lp(args).to_dict())

******** in file <./flask_site/pycache/app.cpython-36.pyc> ********

Fichier binaire ./flask_site/pycache/app.cpython-36.pyc correspondant

******** in file <./flask_site/app.py> ********

25:lp = LaunchPad.from_dict(json.loads(os.environ[“FWDB_CONFIG”]))

376: json.loads(os.environ[“FWDB_CONFIG”]))

… and used a debugger to find the content of this FWDB_CONFIG.

Then

-> I removed all binary files *.pyc as they may act as a cache
-> I exported an A2S_FWDB_CONFIG env var initialized to use the 2nd DB : {“host”: “localhost”, “port”: 27017, “name”: “fireworks_test”, “username”: “a2s_FW”, “password”: “YYYYY”, “logdir”: null, “strm_lvl”: “INFO”, “user_indices”: [], “wf_user_indices”: [], “ssl”: false, “ssl_ca_certs”: null, “ssl_certfile”: null, “ssl_keyfile”: null, “ssl_pem_passphrase”: null}

-> I slightly changed the code to use A2S_FWDB_CONFIG:

$ trouve FWDB_CONFIG

******** in file <./flask_site/app.py> ********

25:lp = LaunchPad.from_dict(json.loads(os.environ[“A2S_FWDB_CONFIG”]))

376: json.loads(os.environ[“A2S_FWDB_CONFIG”]))

******** in file <./scripts/lpad_run.py> ********

501: #os.environ[“FWDB_CONFIG”] = json.dumps(get_lp(args).to_dict())

502: os.environ[“FWDB_CONFIG”] = os.environ[“A2S_FWDB_CONFIG”]

This way FWDB_CONFIG is always initialized with the content of A2S_FWDB_CONFIG and A2S_FWDB_CONFIG is never overwritten.

I launch only one webgui, just to try to reach the new DB fireworks_test …

$sudo lpad webgui -s --port 8080 --host 192.168.7.247

-> the page is displayed, but the DB used is still the default ‘fireworks’ DB that is reached

sudo lpad -l /…/my_launchpad_test.yaml webgui -s --port 8080 --host 192.168.7.247 &

-> same behavior.

I don’t understand why it behaves like this … maybe the default db name is hardcoded somewhere …

$ trouve “‘fireworks’”

******** in file <./core/launchpad.py> ********

109: def init(self, host=‘localhost’, port=27017, name=‘fireworks’, username=None, password=None,

121: user_indices (list): list of ‘fireworks’ collection indexes to be built

720: self.db.command({‘compact’: ‘fireworks’})

1320: Insert the fireworks to the ‘fireworks’ collection.

******** in file <./flask_site/app.py> ********

257: pagination = Pagination(page=page, total=fw_count, record_name=‘fireworks’,

******** in file <./utilities/filepad.py> ********

30: def init(self, host=‘localhost’, port=27017, database=‘fireworks’, username=None,

******** in file <./scripts/lpad_run.py> ********

602: for coll in [‘launches’, ‘tasks’, ‘fireworks’, ‘workflows’]:

-> So i tried to change default name value in ./core/launchpad.py, but it has changed nothing.

In conclusion I think the simplest way to achieve what I want to do is to run a second VM with it’s own MongoDB server holding a DB named ‘fireworks’.

Best regards,
David

Le mercredi 28 novembre 2018 15:41:49 UTC+1, ajain a écrit :

The Flask app (webgui) uses a slightly different method to pass the launchpad information, since there is no easy way that we know of to pass the command line argument about the launchpad into the Flask app.

As a workaround, we put the launchpad information that the user provides into an environment variable called FWDB_CONFIG. The Flask app searches for that environment variable and uses it to load the appropriate launchpad. You can search for the phrase FWDB_CONFIG to see the various parts of the code relating to this.

If you are launching two different web guis with different credentials, can you try using two different command line shells (one for each web gui launch)? Maybe this will prevent one environment variable conflicting with another.

On Wed, Nov 28, 2018 at 7:45 AM [email protected] wrote:

Addendum :

I stop all webgui and try to only set one for the new DB on the same channels thant for the first DB :

sudo lpad -l /blablabla/my_launchpad_test.yaml webgui -s --port 80 --host 192.168.7.247

I should work as before, but with the new DB instead …

but it displays the information of the old ‘fireworks’ DN instead of ‘fireworks_test’ DB

I don’t know what is going wrong with webgui, because it works nice using only the lpad command :

$ lpad -l my_launchpad_test.yaml report


Stats on fws


There are no stats to display for the chosen time period.

$ lpad -l my_launchpad.yaml report

Stats on fws


Stats for time-period 2018-11-27

=================================

ARCHIVED : 0

FIZZLED : 2

DEFUSED : 0

PAUSED : 0

WAITING : 0

READY : 0

RESERVED : 0

RUNNING : 0

COMPLETED : 0

total : 2

C/(C+F) : 0

Stats for time-period 2018-11-26

=================================

ARCHIVED : 0

FIZZLED : 99

DEFUSED : 0

PAUSED : 0

WAITING : 54

READY : 0

RESERVED : 0

RUNNING : 0

COMPLETED : 480

total : 633

C/(C+F) : 82.89999999999999

-> it uses well the DB set in the yaml config file …

Le mercredi 28 novembre 2018 13:22:31 UTC+1, [email protected] a écrit :

Hi,

I have installed my MongoDB instance on a VM. Until now I used only one Mongo DB : the ‘fireworks’ DB.

Now I want to have 2 separated launchpads. In order to achieve that, I created a new DB called fireworks_test, with a new user :

$ mongo

use admin

switched to db admin

db.auth(‘a2s_admin’, ‘XXXXXXXXXX’)

1

use fireworks_test

db.createUser( { user: “a2s_FW”,

pwd: “YYYYYYY”,

roles: [ { role: “dbOwner”, db: “fireworks_test” },

“readWrite”] }

)

Successfully added user: {

“user” : “a2s_FW”,

“roles” : [

{

“role” : “dbOwner”,

“db” : “fireworks_test”

},

“readWrite”

]

}

I also created a new my_launchpad_test.yaml file :

host: 192.168.7.247

port: 27017

name: fireworks_test

username: a2s_FW

password: YYYYYYY
logdir: null

strm_lvl: INFO

to launch the webgui for the default ‘fireworks’ DB, I use :

sudo lpad webgui -s --port 80 --host 192.168.7.247 &

so, to launch the webgui for the new DB, I use :

sudo lpad -l /path_to_my_config_dir/my_launchpad_test.yaml webgui -s --port 8080 --host 192.168.7.247 &

the port are well opened in my firewall :

$ sudo iptables-save | grep 80

-A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

-A IN_public_allow -p tcp -m tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT

and I can check that the port are listen :

$ sudo netstat -lptn

tcp 0 0 192.168.7.247:8080 0.0.0.0:* LISTEN 24790/python3.4

tcp 0 0 192.168.7.247:80 0.0.0.0:* LISTEN 12784/python3.4

I set up 2 ssh tunnels to tunnel to my local ports to the VM’s ones rebounding through hpc (which has a routable address) :

ssh -N -L 8080:192.168.7.247:80 hpc
ssh -N -L 8081:192.168.7.247:8080 hpc

Everything is OK and I can contact the 2 webserver … but :

the old one (http://localhost:8080) never asked for authentification and works nice whereas the new one (http://localhost:8081) pop up an authentification windows and end up with this message :

Could not verify your access level for that URL. You have to login with proper credentials

So my questions are :

Why does it asks for auth ?
Which are the credentials I am supposed to enter (tried several ones without success) ?

Best regards,
David

You received this message because you are subscribed to the Google Groups “fireworkflows” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

Visit this group at https://groups.google.com/group/fireworkflows.

For more options, visit https://groups.google.com/d/optout.


Best,
Anubhav

You received this message because you are subscribed to the Google Groups “fireworkflows” group.

To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].

To post to this group, send email to [email protected].

Visit this group at https://groups.google.com/group/fireworkflows.

For more options, visit https://groups.google.com/d/optout.


Best,
Anubhav

Hi David,

I might try to punt some of this question to Donny Winston, who coded up some of the server mode FireWorks web gui with gunicorn. It’s a topic I don’t know much about, but he might be able to follow your question better. I do see in the code that in non-server mode, the host and port args are a bit different:

if not args.server_mode:
    from multiprocessing import Process
    p1 = Process(
        target=app.run,
        kwargs={"host": args.host, "port": args.port, "debug": args.debug})
    p1.start()
    import webbrowser
    time.sleep(2)
    webbrowser.open("http://{}:{}".format(args.host, args.port))
    p1.join()
else:
    from fireworks.flask_site.app import bootstrap_app
    try:
        from fireworks.flask_site.gunicorn import (
            StandaloneApplication, number_of_workers)
    except ImportError:
        import sys
        sys.exit("Gunicorn is required for server mode. "
                 "Install using `pip install gunicorn`.")
    nworkers = args.nworkers if args.nworkers else number_of_workers()
    options = {
        'bind': '%s:%s' % (args.host, args.port),
        'workers': nworkers,
    }
    StandaloneApplication(bootstrap_app, options).run()


I looked at all the hard-coded instances of “fireworks” that you highlighted, but didn’t see any issues there. Those are typically referring to a collection name (not database name), and when they’re not, it’s just a default value that the user can change.

···

Best,
Anubhav