def create_pool(self, name, replicas=3): """ Request pool setup @param name: name of pool to create @param replicas: number of replicas for supporting pools """ # json.dumps of the CephBrokerRq() requests = self.get_local(key='broker_reqs') or {} if name not in requests: rq = CephBrokerRq() rq.add_op_create_pool(name="{}".format(name), replica_count=replicas, weight=None) if not requests: requests = {} requests[name] = rq.request self.set_local(key='broker_reqs', value=requests) send_request_if_needed(rq, relation=self.relation_name) self.remove_state('{relation_name}.pools.available') else: rq = CephBrokerRq() try: j = json.loads(requests[name]) rq.ops = j['ops'] send_request_if_needed(rq, relation=self.relation_name) except ValueError as err: log("Unable to decode broker_req: {}. Error: {}".format( requests[name], err))
def changed(self): data = { 'mds_key': self.mds_key(), 'fsid': self.fsid(), 'auth': self.auth(), 'mon_hosts': self.mon_hosts() } if all(data.values()): self.set_state('{relation_name}.available') json_rq = self.get_local(key='broker_req') if json_rq: rq = CephBrokerRq() j = json.loads(json_rq) rq.ops = j['ops'] log("changed broker_req: {}".format(rq.ops)) if rq and is_request_complete(rq, relation=self.relation_name): log("Setting ceph-mds.pools.available") self.set_state('{relation_name}.pools.available') else: log("incomplete request. broker_req not found")
def initialize_mds(self, name, replicas=3): """ Request pool setup and mds creation @param name: name of mds pools to create @param replicas: number of replicas for supporting pools """ # json.dumps of the CephBrokerRq() json_rq = self.get_local(key='broker_req') if not json_rq: rq = CephBrokerRq() rq.add_op_create_pool(name="{}_data".format(name), replica_count=replicas, weight=None) rq.add_op_create_pool(name="{}_metadata".format(name), replica_count=replicas, weight=None) # Create CephFS rq.ops.append({ 'op': 'create-cephfs', 'mds_name': name, 'data_pool': "{}_data".format(name), 'metadata_pool': "{}_metadata".format(name), }) self.set_local(key='broker_req', value=rq.request) send_request_if_needed(rq, relation=self.relation_name) else: rq = CephBrokerRq() try: j = json.loads(json_rq) log("Json request: {}".format(json_rq)) rq.ops = j['ops'] send_request_if_needed(rq, relation=self.relation_name) except ValueError as err: log("Unable to decode broker_req: {}. Error: {}".format( json_rq, err))