You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
8.7 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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.