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 :
[dmichea@hpc-a2s-dmichea 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