def delete_replication_dest_cluster(self, dest_cluster): consul_api = ConsulAPI() used_in_replication = 0 # Get All Replication Jobs # consul_api = ConsulAPI() replication_jobs = consul_api.get_replication_jobs() for key, value in replication_jobs.iteritems(): if value.destination_cluster_name == dest_cluster.cluster_name: used_in_replication += 1 if used_in_replication > 0: raise ReplicationException( ReplicationException.DESTINATION_CLUSTER_USED_IN_REPLICATION, "This destination cluster is already used in replication job.") consul_api.delete_replication_destination_cluster(dest_cluster)
def add_replication_job(self, job_entity, src_disk_meta): consul_api = ConsulAPI() jobs = consul_api.get_replication_jobs() for job_id, job in jobs.items(): if job.job_name == job_entity.job_name: raise ReplicationException(ReplicationException.DUPLICATE_NAME, "Duplicate replication job name error.") manage_remote_replication = ManageRemoteReplication() manage_remote_replication.disk_id = job_entity.destination_disk_id manage_remote_replication.cluster_name = job_entity.destination_cluster_name job_id = consul_api.get_next_job_id() source_fsid = ceph_disk.get_fsid(configuration().get_cluster_name()) job_entity.job_id = job_id job_entity.source_cluster_fsid = source_fsid src_disk_meta.replication_info["src_cluster_fsid"] = source_fsid mng_rep_info = ManageDiskReplicationInfo() src_disk_meta = mng_rep_info.set_replication_info(job_entity.destination_cluster_name, src_disk_meta) replication_info = src_disk_meta.replication_info # update source and destination disks meta. manage_remote_replication.update_replication_info(replication_info) mng_rep_info.update_replication_info(src_disk_meta, replication_info) system_date_time = str(datetime.datetime.now()).split('.')[0] # save job in consul consul_api.update_replication_job(job_entity) # Saving log in Consul : log_text = "{} - Job {} has been created.".format(system_date_time, job_id) self.log_replication_job(job_id, log_text) # start replication job: self.start_replication_job(job_entity)
def get_replication_jobs(self): consul_api = ConsulAPI() jobs = consul_api.get_replication_jobs() return jobs