00:01 Let's go back to our little play-around service app, 00:04 I'll go and run this for you, it probably looks familiar, 00:07 remember our service central version 2.0, this is demo edition 00:11 let me actually change that little header to prod edition, not that it much matters, 00:16 but we're going to set this up to run in our production environment. 00:19 If I try to do things like list the car, it will show me my local cars 00:24 because I'm running on my Mac, however if I push this up to the server 00:28 and I put it onto that fake web server server, 00:32 it's going to try to talk to local host and have a big fall, 00:35 right that's not going to work well. 00:38 So instead, what we need to do is we need to do is 00:41 we need to go and adjust our little connection bit here. 00:45 Now, let me go and actually add some parameters to this 00:50 we're going to add a password, say user, a password, 00:57 a port, a server, use ssl, and I think that'll do, okay. 01:07 So now I want to use those things to actually connect, 01:10 so we're going to have like this dual mode thing going on, 01:15 and I'll do it like this, we'll say if user or password, 01:20 so if either of those are set we're going to do something else, 01:24 we're going to just fall back and just do this little simple bit or right here, 01:30 here I'll do a print, registering dev connection, 01:35 so go like this, and it is not going to love it, 01:40 so let's go over here and give this some defaults, so none for all of these; 01:46 default here's to 27017, server=local host and use_ssl = false 02:01 actually let's go and default that to true. 02:06 Okay so now I should be able to run this here and list cars 02:11 actually up here we'll see registering dev connection 02:16 and let's put a little kind of indicator, something to the say 02:22 hey this is like an extra thing, so go over here and we'll say registering prod connection 02:32 and I want to give it some extra info, and let's hold off 02:36 and what goes there just for a second, 02:39 okay so we want to gather this up, we actually have to pass more information than this 02:42 and just to make sort of recording how we connected a little bit easier, 02:46 I'm going to create this dictionary where we set all these, 02:51 so username is this, password, server, port, authentication sources, admin 02:55 authentication mechanism is SCRAM-SHA-1, 02:59 ssl is, use ssl and we have to say ignore the self signed certificate 03:04 if we don't do this, it will say your certificate is not valid. 03:09 Now PyCharm warns that this thing is basically missing from ssl 03:15 but it's not, just ignore that. 03:17 So we're going to come over here, and we're going to do this as well 03:22 let's go and say, actually let me change the order real quick, 03:29 so we're going to say all of these are keyword arguments for this method 03:32 so we can just say **data 03:35 and that's going to basically set username= user, password = password and so on, 03:39 why did I put it like this— because I'd like to capture all those details. 03:42 So let me just do really quick data of password equals this, 03:52 and then I'll just print out this dictionary here 03:56 so registering, production, connection with those details. 03:59 Okay, so if you pass a username or password in 04:03 it's going to work differently, let's just make sure everything still runs 04:06 can I list the cars, see the dev connection, yeah, excellent. 04:11 So things are still working good on of the dev side of the story. 04:14 The next thing we've got to do is come over here where we're calling this, 04:18 and let's just go ahead and pass in all the details here. 04:25 We wanted to use ssl that defaults to true, so that's all good. 04:31 Now if I run this, you're going to see not amazing stuff 04:35 so like list is probably going to time out, it takes a while for it to time actually, 04:40 let's try to renegotiate the connection and it really doesn't want to crash 04:43 but eventually this is going to timeout, 04:46 we already saw we can't connect to the server here. 04:49 So let me push this up to the git repository 04:55 and then we'll get it on to the server and production and make sure everything works. 05:00 I pushed those changes to github and let's go over to the web server 05:05 see I am already here, I'm just in my home directory/root 05:10 so what I want to do is I want to go and get that code over here, 05:14 so we're going to go and go to the github repository for our code here 05:20 notice when I do a refresh, you should see 05:22 that I just added now with production capabilities, 05:26 so let's copy this, and let's say git clone this, its a public repository 05:31 so I don't need any credentials or any of that business. 05:34 05:39 Okay, so things are good, we'll go to Mongo and notice there's a source 05:44 and I have 09 deploys, so if we look in here, 05:50 we've got service central deploy and service starter, 05:55 server central deploy is the starter obviously it's what we started with, 05:58 the service central deploys is the one that we just changed; 06:03 so for example, if we look at this 06:08 you can see it's using this complicated version here, 06:12 if we look at this one, you can see we're setting a MongoDB just the way we like. 06:18 Okay, so now what we have to do is run it and let's go over here 06:24 connect to the MongoDb server and say show dbs, 06:29 hey there's nothing here, so let's go and run this, 06:33 so we've got our service deploy, so we'll say it Python 3 06:36 we didn't use a … or change its execution states. 06:41 Now one thing we need is we need to install Mongoengine of course 06:44 so let's do this, we'll just let Python do it, 06:47 so we'll save Python 3 -m venv to create a virtual environment, 06:56 here we need to apt install Python 3 -venv, try again, 07:08 so now we'll source activate this and our prompt changes. 07:15 Okay good, so now we should be able to run our Python 3 thing again, 07:19 oh yeah, well it's active, we still need to pip install Mongoengine 07:23 and that'll take PyMongo along with it. 07:27 I believe that failed building a wheel because set up tools is out of date, 07:32 anyway, it should still work. Let's give this another shot, 07:36 now we have Mongoengine registered in a virtual environment, 07:39 a virtual environment is active, our code is here 07:42 a lot of deployment stuff, let's go. 07:45 Oh, look at that, so now we're registering the production connection, 07:48 I mean, you probably don't want to print this out all the time 07:51 but notice the hosts, authentication, everything, 07:54 it seemed to take it like the register worked 07:56 we haven't tried to talk to the database yet, let's try to list the cars. 07:59 There are no cars, did that make in a dent? 08:04 No, no dent yet. Let's add a car this is going to be an F40, 08:10 it's going to be built in 2010, that didn't crash, let's try to list the cars, 08:17 look at that, let's add a service record, service that car. 08:24 The vin number is that, the price of the service is a thousand dollars 08:30 and this is going to be a new tires, the customer is extremely happy, loved it. 08:36 Now we've got our new tires, so look at this, show dbs, 08:40 use demo dealership, show collections, db.cars.find.pretty 08:52 bam, look at that, we were able to make our Python code 08:58 on the right machine with all the right settings, 09:00 and all the farewell rules and everything, 09:04 go over and talk to the MongoDB server. 09:06 This is pretty excellent, we can go add another car 09:10 obviously like at this point once you see it creating some documents 09:13 and working to some degree everything is going to work, right, 09:16 there's really nothing to it, so this is excellent, 09:19 let me just go create one more car so we have two things, 09:22 this is going to be Enzo and this was build very recently 09:29 let's list the cars and add a service record for it. 09:33 The Enzo needs some work, so for a 100 dollars that will be oil change, 09:40 pretty happy, yeah, one more, the same car, 09:47 this is going to be 250 tire rotation moderately happy, 09:53 so let's go over here and do this again. 09:56 There we go, we've got our Enzo with two service histories 09:59 our F40 with one service history and so on. 10:02 Okay excellent, so it looks like this is working, 10:05 I added this other record here so we have a little bit of data 10:08 because the next thing that we want to look at is how do we manage this, 10:11 how do we connect our database management tools 10:14 and backup things and what not to. 10:16 As far as Python goes, this baby is rocking. 10:19 I guess maybe connect one more time, boom, list the cars, 10:23 there they are, yeah looks good to me.