--- /dev/null
+#!/usr/bin/env python
+#this script is for migrating sites, user from PLC to PLE
+import os,sys, time
+import xmlrpclib
+from optparse import OptionParser
+from pprint import PrettyPrinter
+
+
+
+class Migration:
+ subversion_id = "$Id Amine"
+
+ def __init__(self):
+ try:
+ #Remote(PLC) Api connexion
+ self.remote_name="PLC"
+ self.remote_url="https://tac.inria.fr:443/PLCAPI/"
+ self.remote_server=xmlrpclib.Server(self.remote_url,allow_none=True)
+ #local(PLE) Api connexion
+ self.local_name="PLE"
+ self.local_url="https://garfield.inria.fr:443/PLCAPI/"
+ self.local_server=xmlrpclib.Server(self.local_url,allow_none=True)
+ except : raise
+
+ def local_auth(self):
+ return {'Username': 'root@plc2.inria.fr',
+ 'AuthMethod':'password',
+ 'AuthString':'*****',
+ 'Role' : 'root'
+ }
+
+ def remote_auth(self):
+ return {'Username': 'root@plc1.inria.fr',
+ 'AuthMethod':'password',
+ 'AuthString':'******',
+ 'Role' : 'root'
+ }
+
+ def header(self,message):
+ now=time.strftime("%H:%M:%S", time.localtime())
+ print "*",now,'--',message
+
+ def migrate_persons(self, person_ids, site_id):
+ self.header("Dealing with persons migration")
+ for person_id in person_ids:
+ remote_person=self.remote_server.GetPersons(self.remote_auth(),{'person_id':person_id})
+ remote_person[0]['peer_id']= None
+ self.header("Migrating from %s to %s the person %s \n"%(self.remote_name,self.local_name,
+ remote_person[0]))
+ local_person=self.local_server.AddPerson(self.local_auth(),remote_person[0])
+ self.header("Add %s to Site %d \n"%(remote_person[0]['email'],site_id))
+ status=self.local_server.AddPersonToSite(self.local_auth(),
+ remote_person[0]['email'],site_id)
+ #to be coded
+ #Add roles to person the same that he has in his remote platform
+ #Adding keys
+ #Adding person to slice
+
+ def migrate_sites(self,sites_names):
+ self.header("Dealing with sites migration")
+ for site_name in sites_names:
+ remote_site=self.remote_server.GetSites(self.remote_auth(),{'name':site_name})
+ self.header("Migrating from %s the site %s \n"%(self.remote_name,remote_site))
+ remote_persons_ids=remote_site[0]['person_ids']
+ peer_site_id=remote_site[0]['site_id']
+ #make some changes to the new incoming site
+ remote_site[0]['peer_site_id']=peer_site_id
+ remote_site[0]['peer_id']= None
+ remote_site[0]['login_base']=remote_site[0]['login_base']+'ple'
+ remote_site[0]['enabled']=True
+ local_site=self.local_server.AddSite(self.local_auth(),remote_site[0])
+ #May be we have to manage the site address too.... to be coded
+ self.header("Getting in %s a new site %s\n"%(self.local_name,
+ self.local_server.GetSites(self.local_auth(),
+ {'site_id':local_site})))
+ #getting person involved in the remote site
+ self.migrate_persons(remote_persons_ids,local_site)
+ return True
+
+ def run (self):
+ usage = """usage: %%prog sites_names [site_name1][site_name2].......
+ """
+ parser=OptionParser(usage=usage,version=self.subversion_id)
+ parser.add_option("-v","--verbose", action="store_true", dest="verbose", default=False,
+ help="Run in verbose mode")
+ (self.options, self.args) = parser.parse_args()
+
+ if len(self.args) == 0:
+ print usage
+ else:
+ self.migrate_sites(self.args)
+
+
+ def main(self):
+ try:
+ success=self.run()
+ if success:
+ return 0
+ else:
+ return 1
+ except SystemExit:
+ raise
+
+if __name__ == "__main__":
+ sys.exit(Migration().main())