Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 def get_replication_jobs(self):
     consul_api = ConsulAPI()
     jobs = consul_api.get_replication_jobs()
     return jobs