Re: About MirrorManager2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 24, 2015 at 04:20:19PM +0100, Pierre-Yves Chibon wrote:
> On Mon, Feb 23, 2015 at 04:42:46PM -0500, David Gay wrote:
> > ----- Original Message -----
> > > From: "Pierre-Yves Chibon" <pingou@xxxxxxxxxxxx>
> > [snip]
> > 
> > > Before we move MirrorManager2 to prod, here is what I think would be nice to
> > > do/have:
> > > 
> > > - Pickle validation
> > >   - Figure a way to validate a pickle after its creation and before moving it
> > >   to
> > >     the mirrorlist boxes
> > > - Find out if we can improve our tests some more
> > >   (to improve our confidence that we're ready)
> > > - Engage the mirror mailing list and try to get them to react on the coming
> > >   changes
> > > 
> > > The pickle validation might also be an interesting idea to check if there is
> > > a
> > > difference between the pickle generated by prod and the one generated in stg.
> > > 
...
> > 
> > I'd like to help move this along to production. I have very limited knowledge of the MM codebase, but I did attend the MM FAD, so I have at least a vague understanding of how it works. Are there any changes to these lists since last week? What might be productive to work on? Like I said, my knowledge is limited, but pickle validation sounds like a pretty general Python task. Maybe I could look into that?
> 
> None of these things have progressed over the last week.
> Clearly the three points at the top have the most priority for MM2 (imo) and the
> pickle validation might be tricky (how to test it) but is something I really
> think I want to have before we switch.

I found out this morning that I have a couple of files around mirrormanager's
pickle, might be useful, maybe not but here they are :)

Apparently I have been comparing MM1 and MM2 pickles at one point :)

Pierre
#!/usr/bin/python

import cPickle

with open('mm1_mirrorlist_cache.pkl') as stream:
    mm1 = cPickle.load(stream)

with open('mm2_mirrorlist_cache.pkl') as stream:
#with open('mm2_pickle.pkl') as stream:
    mm2 = cPickle.load(stream)


nok = []
for k in mm1:
    if mm1[k] != mm2[k]:
        nok.append(k)
        print 'NOK', k
    else:
        print 'OK', k

print list(enumerate(nok))

print '\n'

for key in nok:
    print '**', key
    for k in sorted(mm1[key].keys()):
        if k not in mm1[key]:
            print 'NOK - abs (mm1)', k
        elif k not in mm2[key]:
            print 'NOK - abs (mm2)', k
        elif sorted(mm1[key][k]) != sorted(mm2[key][k]):
            nok.append(k)
            print 'NOK - diff', k
        #else:
            #print 'OK', k

for key in nok:
    print '**', key
    for k in sorted(mm2[key].keys()):
        if k not in mm1[key]:
            print 'NOK - abs (mm1)', k
        elif k not in mm2[key]:
            print 'NOK - abs (mm2)', k
        elif sorted(mm1[key][k]) != sorted(mm2[key][k]):
            nok.append(k)
            print 'NOK - diff', k
#!/usr/bin/python

import cPickle
import sys

if len(sys.argv) != 2:
    print 'Usage: load_pickle.py <pickle_file>'
    sys.exit(1)

pickle = sys.argv[1]

with open(pickle) as stream:
    mm2 = cPickle.load(stream)

print(mm2.keys())
_______________________________________________
infrastructure mailing list
infrastructure@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/infrastructure

[Index of Archives]     [Fedora Development]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux