Wednesday, 2016-03-30

openstackgerritWeAreFormalGroup proposed openstack/smaug: Implement cinder protection plugin  https://review.openstack.org/28645802:05
openstackgerritWeAreFormalGroup proposed openstack/smaug: Implement glance protection plugin  https://review.openstack.org/29575202:09
*** yinweiishere has joined #openstack-smaug02:41
openstackgerritsmile-luobin proposed openstack/smaug: Implement nova protection plugin  https://review.openstack.org/29561802:45
openstackgerritsmile-luobin proposed openstack/smaug: Implement nova protection plugin  https://review.openstack.org/29561802:48
*** chenhuayi has joined #openstack-smaug03:07
chenhuayidevstack installation failed.03:09
chenhuayi++inc/python:pip_install:163                echo 'Installing test-requirements for /opt/stack/smaug-dashboard/test-requirements.txt'03:09
chenhuayiInstalling test-requirements for /opt/stack/smaug-dashboard/test-requirements.txt03:09
chenhuayi++inc/python:pip_install:165                sudo -H http_proxy= https_proxy= no_proxy= PIP_FIND_LINKS= /usr/local/bin/pip2.7 install -c /opt/stack/requirements/upper-constraints.txt -r /opt/stack/smaug-dashboard/test-requirements.txt03:09
chenhuayiIgnoring dnspython3: markers u"python_version=='3.4'" don't match your environment03:09
chenhuayiCould not satisfy constraints for 'horizon': installation from path or url cannot be constrained to a version03:09
chenhuayi+inc/python:pip_install:1                  exit_trap03:09
chenhuayiInstalling test-requirements for /opt/stack/smaug-dashboard/test-requirements.txt   ???03:10
chenhuayiThere was no problem in yestoday.03:12
*** gampel1 has joined #openstack-smaug06:00
*** saggi_class has joined #openstack-smaug06:12
saggi_classyinwei_computer, yinweiishere: ping06:12
yinwei_computerhello06:36
gampelhi yinwei06:42
yinwei_computerhi gampel06:43
yinwei_computerhi saggi_class06:43
*** yuval has joined #openstack-smaug06:43
saggi_classyinwei_computer:  What do you think about the suggestion I sent in email yesterday?06:44
gampelWhat we did not find yesterday in nova server info is the port or net id06:44
gampelregarding the dangling ports?06:44
saggi_classgampel: We will take it from neutron. It doesn't matter as long as we store it.06:44
yinwei_computeryes, nova doesn't have this info06:44
gampelok so we store in the server teh net id and port id06:44
yinwei_computersaggi_class: I replied to your mail06:45
yinwei_computerhave you got it?06:45
yinwei_computerI'm not sure if I catch your idea06:45
yinwei_computerdo you mean there will be a single network protectable plugin, which manages all l2/l3 subresources, just excluding port?06:46
yinwei_computerPls. take a look at my reply to make sure we are on the same page06:46
saggi_classI'm not sure I'll have time. This is the only class I have where I'm in front of a computer.06:47
saggi_classBut the general idea is to have a single portectable for all network resources.06:48
gampelI think that the VM should be dependent on the  networking:: internally it includes all the networking data and can build the dependencys06:48
yinwei_computerincluding port?06:48
saggi_classand have all VMs depend on it.06:48
gampelyes06:48
saggi_classWe don't really back up port. We back up the VM connection info and network id06:48
saggi_classThe port is a side effect of this realtionship06:49
gampelwe  just  need to store in the Nova server meta data the network id06:49
yinwei_computeryes, I got this point06:49
yinwei_computerwhat if the restore requirement is to keep fixed ip unchanged?06:49
yinwei_computeror mac unchanged?06:49
saggi_classThe mac will be unchanged by default06:50
saggi_classwe will keep this information on the VM06:50
saggi_classin the bank06:50
saggi_classsince it's a property of the VM virtual hardware06:50
saggi_classSorry but I gtg to class06:50
*** saggi_class has quit IRC06:50
yinwei_computerok06:51
gampel i think it could be one protectorabl for now and latter we could split it into the aaS VPN FWaaS etc06:51
yinwei_computergampel: how comes the mac is unchanged by default?06:51
gampelthe mac is part of what we get from nova info for the sever, if we could preserve the MAC we will do06:52
gampelif not possible we would have to generate a new one06:52
yinwei_computeryou mean sepcify the mac in boot server's parameter06:52
yinwei_computerso that's my question: if the network protectable includes port or not.06:53
gampelI think that in Neutron plugin we should try to understand the connection Port to Server by the data stored in Nova protection plugin06:53
yinwei_computerif it doesn't include port, then we create port during server restoration, specifying the network id06:53
gampeli think it does if it is possible and it should be maybe part of the options parameters06:54
yinwei_computerif it include port, port is exclusive to one server, not shared by many servers06:54
gampelI am not sure i understand I think it is always so06:56
yinwei_computerok, so who will create port?06:57
yinwei_computernetwork resource node or server resource node?06:57
yinwei_computerI mean, in restoration06:57
yuvalyinwei_computer: the server resource node06:57
yuvalyinwei_computer: there is only 1 network object06:58
yinwei_computerok, so the network resource  node doesn't care about port, right?06:58
yuvalyinwei_computer: which creates the l2, l3, etc.. objects06:58
gampelwhen we create vm we could specify teh port as an optional parameter06:58
yuvalyinwei_computer: correct06:58
yinwei_computer:)06:59
gampelone sec06:59
yinwei_computerso let's first confirm one thing, network resource node create port or not.  I think you guys haven't achieved consensus.06:59
gampelI think when we restore there are two options07:00
yinwei_computeryes07:01
gampel1) Craete VM with Net_Id parameter if we do not care about the MAC (nova will create the port )07:01
gampel2) Create VM with the optional Port parameter after we created the port in the neutron protection Plugin07:02
gampelin option 1 we need to make sure we add this port to the relevant  SG07:02
gampeldo you agree ?07:02
yinwei_computeryes, totally agree07:03
gampelI think that we can achieve  this two flows using protect and restore schemes  and let the user define the desire flow07:03
yinwei_computerbut I think this is the options for network protectable /protection plugin07:03
yinwei_computerimplementation07:04
yinwei_computerI prefer option2, where network take care of port, and network plugin implementation has the freedom to achieve different requirement07:05
yinwei_computerwhat is unchanged, what could be changed07:05
gampelI do not have a problem doing this as first phase but i do not see a problem supporting option 1 latter by using the parameters07:06
gampelor I am missing some thing07:06
gampelServer is dependent on Network07:07
gampeland Project is dependent on network07:07
yinwei_computerif we use option1, requirement change on network may requires modification on server plugin07:07
yinwei_computersay, one day the requirment is fixed ip/mac unchanged, user need modify both server plugin and network plugin07:08
yinwei_computerfor option2, only network plugin will be modified07:08
yinwei_computerI mean, let network takes care of port could limit network issue solved inside network plugins07:09
yinwei_computerbtw, network takes care of port could solve the dangling port issue07:09
yinwei_computerwhat do you think?07:11
gampelI do not see a problem starting this way , we would  have to see we are not missing any think07:12
openstackgerritzengchen proposed openstack/smaug: Implement time trigger with Eventlet  https://review.openstack.org/29688007:13
gampelwe need to make sure we could have a link metadata stored in Server with the port is07:13
gampelid07:13
yinwei_computeryes, that's the info to map restored new server to restored new port07:13
gampelI think in the end we will  have to support both flows but I have no problem starting this way07:14
yinwei_computeras saggi said, we need check this info from neutron07:14
gampeli understand07:14
yinwei_computeractually, personally I'd like to make a clear line between server and network, so I prefer the latter one.  Like volume/server attachment :)07:15
gampelI have a question  regarding the glance protection plugin07:15
yinwei_computeryes07:15
gampel#link https://review.openstack.org/#/c/295752/07:16
gampeli added a comment there for chunks but it was ignored07:17
gampel" think that you will have to split this object into chunks think that you could reuse the implementation in the dragon project _imagecopy(...)"07:18
gampelhttps://github.com/os-cloud-storage/openstack-workload-disaster-recovery/blob/e4d35645c53a4a41a9b1a158f6f0d49ab9eb8fd2/dragon/workload_policy/actions/plugins/instance_image_action.py07:18
yinwei_computeryes, rong discussed this with us07:18
gampelthis is the link to dragon PoC project  form IBM any objcet store as max chunk07:18
yinwei_computerdo you mean the feature like s3 multipart upload?07:18
yinwei_computerwhich means big object will be split by chunks and upload on parallel?07:19
gampelI discuss this with saggi that we need to add to the context or to the bank objcet mac chunk07:19
yinwei_computeryes, I know that07:19
yinwei_computerswift also supports multi part upload alike feature07:19
yinwei_computerbut we'd better have swift-bank-plugin to handle this07:20
yinwei_computerand configure it with default parameter, like size exceeding 4M will be split in 4M chunks07:20
yinwei_computerbecause this depends on the bank implementation, right?07:21
gampelOk but it means that you will copy the  "100G" image in memory to the bank plugin07:21
yinwei_computernot all bank supports multi part upload07:21
yinwei_computerwhy07:21
yinwei_computeras LuoBin checked with me, this is stream opertaion07:22
gampelyou should use a multi part write to the bank plugin and not read all the image at once from glance07:22
yinwei_computerI'm not sure if I understand your question07:24
gampelOk i have to go into a meeting07:24
gampelwe need to make sure we do not copy all the data from glance into memory07:25
yinwei_computerok, I will double check the details with LuoBin07:25
yinwei_computersure07:25
yinwei_computerwhat I suppose the image_data is a file instead of memory copy data07:25
gampeland when writing to bank we should chunk by the max chunk of that bank07:25
gampelplease look on how it was implemented  in dragon for ideas07:26
yinwei_computerand swift's multi part upload will read this file and chunk it into several parts but connect them in metadata.07:26
yinwei_computersure07:26
gampelsorry i have to go07:26
yinwei_computerok07:27
yinwei_computerwill respond to you later07:27
yuvalping chenzeng07:31
chenzengyes07:33
chenzengyuval:how are you? do you see my new udates?07:35
openstackgerritzengchen proposed openstack/smaug: Implement time trigger with Eventlet  https://review.openstack.org/29688007:35
yuvalchenzeng: hey, how are you?07:38
chenzengyuval:fine.and you? the weather is very good. welcome you to come to china07:39
yuvalchenzeng: looking forward to it :)07:39
chenzengyuval:ya. i hope to see you in china.07:40
chenzengyuval:i just submit the new updates right now. do you see it.07:40
chenzengyuval:i don't understand the 'copy the self._operation_ids on each loop'.07:41
yuvalchenzeng: lets get to this in a second, ok? I would like to first speak on _start_greenthread()07:44
chenzengok07:44
yuvalchenzeng: I don't understand why we calculate a past time, and not the next time after now07:44
chenzengyuval:do you see my comments in the codes?07:44
yuvalchenzeng: yes07:45
chenzengyuval:ok, i will take a example for you07:45
chenzengyuval: user create a trigger which only run once. the trigger_property is like this{'format':'crontab', 'pattern':'* * * * *', 'window':10, 'end_time':now}. in the __init__, if use doesn't specify the start_time, it will be now.07:48
chenzengyuval:then the star_time < now.07:48
yuvalchenzeng: I understand07:49
chenzengyuval:good, am i right?07:50
yuvalchenzeng: so, how about:07:51
yuvalchenzeng: self._compute_next_run_time(now - window, ...)07:51
chenzengwhat's the question?07:53
yuvalchenzeng: or another case. a user create a trigger, trigger_property: {'format': 'crontab', 'pattern': '* 1 * * *', 'window': 6000}. no operations are added, so greenthread doesn't start. at 2 in the morning, a user adds an operation. immediately, the job of 1 in the morning happens07:56
yuvalchenzeng: ?08:00
chenzengsorry, i don't understand ' at 2 in the morning, a user adds an operation. immediately, the job of 1 in the morning happens'08:01
chenzengyou mean at 2:00 user add an operation?08:01
chenzengthe job of 1 is what?08:01
yuvalthe crontab is set to happen at 1am08:02
yuvalthe operation is registered to the trigger at 2 am08:02
chenzengok, i take a look.08:02
yuvalbecause the first_run_time is in the past (1am)08:02
yuvaland it is within the window08:02
yuvalthe operation will happen08:02
yuvalthat is what I'm concerned with08:03
chenzengyes, that is the logic.08:04
chenzengany problem?08:04
yuvalchenzeng: how about, instead of looping over the result of _compute_next_run_time08:08
yuvalchenzeng: give _compute_next_run_time the current time (now) minus the window08:08
yuvalchenzeng: as the start time08:08
chenzengyuval:ok, that's the simpler way. i will udpate. thanks.08:09
yuvalchenzeng: do you agree with it? is it ok?08:09
chenzengyuval:about your example, i don't know what is you concern with?08:11
yuvalchenzeng: that an operation supposed to happen in the future will be triggered08:12
chenzengyuval:about your simpler way that computes first run time. i know the start_time will not influnce the next time for contab. but for rfc2445, i don't know if it will.08:13
*** gampel1 has quit IRC08:14
chenzengyuval:our trigger is design to run like that. we must suppose if the triggered time is not on time, and if it doesn't exceed the end time, we should trigger the operation.08:18
chenzengotherwise what is the window used for.08:18
yuvalchenzeng: I agree08:19
yuvalchenzeng: ok, so what about rfc2445?08:19
chenzengsorry, i have not researched the rfc2445.08:20
chenzenglater i will go to study rfc2445.08:20
yuvalI asked because you refered to it08:21
chenzengrfc2445 is another time format08:21
yuvalchenzeng: do you think we can avoid the loop over next_run_time?08:21
chenzengyou mean the loop at _start_greenthread?08:22
yuvalyes08:22
chenzengcurrently, i can use your algorithm. but we should consider wheather it is allways right.08:24
yuvalchenzeng: I'm in favor of not looping, but it is your choice. can we move to the copying of the operations_id set?08:25
chenzengfor example, for crontab, the pattern is "* */1 * * *", the start_time = 15:30 or 15:40, then the next time is 16:0008:27
chenzengno matter the start_time = 15:30 or 15:40, then the next time is 16:00 for crontab.08:28
chenzengif the action of rfc2445 or any other kind of time format is like the crontab, your algorithm is the best.08:29
chenzengwe can define the same rule for all time formats, then we can use your algorithm08:31
chenzengcan we move to the copying of the operations_id set?08:31
yuvalyes08:31
chenyingHi yuval  Is saggi here?08:31
yuvalchenzeng: no, can I help?08:32
yuvalchenying: no, can I help?08:32
chenzengyuval:as i replied to you. isn't the 'context switch' atomic?08:32
yuvalchenzeng: well, eventlet context switches happen on sleep, I/O and such08:33
chenzengyuval:yes08:33
yuvalchenzeng: consider during the loop over operation_ids08:33
yuvalchenzeng: when we send to the executor, we get a 'context switch' to an rpc call adding/removing operation_ids08:34
chenzengyou mean when looping the operation_ids, it can be switched out ?08:35
yuvalchenzeng: as we know, during an iteration over a container, if you change the number of elements, it gives an error08:35
yuvalchenzeng: we don't know, but it might. we call self._executor.execute(). if that function sleep or does I/O, it might get a context switch08:36
yuvalchenzeng: but that depends on the executor implementation, which we do not know in time_trigger08:36
chenyingHi yuval I hope saggi can address the comments of operation log patch.08:36
yuvalchenying: I believe he will take a look later. I'll take a look also08:37
chenzengi understand you08:38
chenzengyuval: i understand you08:38
yuvalchenzeng: we could use a lock there, but I think copying can be better, performance-wise08:41
yuvalchenzeng: I have to go08:45
chenzengyuval:ok, i agree with you08:45
openstackgerrityinwei proposed openstack/smaug: Create BankCheckpointCollection implementation  https://review.openstack.org/28032509:13
openstackgerrityinwei proposed openstack/smaug: Enable lease checking for checkpoint  https://review.openstack.org/29922809:13
openstackgerritzengchen proposed openstack/smaug: Implement time trigger with Eventlet  https://review.openstack.org/29688009:14
openstackgerrityinwei proposed openstack/smaug: Restore design spec (protection service level)  https://review.openstack.org/29695009:30
openstackgerritzengchen proposed openstack/smaug: Implement time trigger with Eventlet  https://review.openstack.org/29688009:32
*** huayi_ has quit IRC09:43
chenzengyuval:sorry to delay your dinner time.09:49
yinwei_computerping saggi11:29
yinwei_computerping gampel11:29
*** chenhuayi has quit IRC11:46
*** openstackgerrit has quit IRC11:47
*** openstackgerrit has joined #openstack-smaug11:47
*** gampel1 has joined #openstack-smaug12:21
*** openstackgerrit has quit IRC12:33
*** openstackgerrit has joined #openstack-smaug12:33
*** openstackgerrit has quit IRC13:18
*** openstackgerrit has joined #openstack-smaug13:18
*** zhonghua has joined #openstack-smaug13:19
*** zhonghua-lee has quit IRC13:21
*** yuval has quit IRC15:32
*** chenying has quit IRC16:17
*** openstack has joined #openstack-smaug17:04
*** openstackgerrit has quit IRC20:48
*** openstackgerrit has joined #openstack-smaug20:48
*** gampel1 has quit IRC22:04

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!