def add(self, ns): # TODO: Adjust primary/failover relationships via CLI kwargs = {"conf_params": {}} kwargs["name"] = ns.subject kwargs["mgt"] = self._resolve_mgt(ns) kwargs["mdts"] = self._resolve_mdts(ns) kwargs["osts"] = self._resolve_osts(ns) formatted_volumes = [] for target in [kwargs["mgt"]] + kwargs["mdts"] + kwargs["osts"]: # Skip resolved MGS host if "volume_id" not in target: continue if ns.reformat: target["reformat"] = True else: volume = self.api.endpoints["volume"].show(target["volume_id"]) if volume["filesystem_type"]: formatted_volumes.append(volume) if formatted_volumes: # Bit of a hack -- let these be rebuilt from args on the next # pass. Otherwise we get duplicates and that makes the API sad. for attr in ["mgt", "mdts", "osts"]: delattr(ns, attr) raise ReformatVolumesConfirmationRequired(formatted_volumes) self.output(self.api_endpoint.create(**kwargs))
def add(self, ns): vn = self._resolve_volume_node(ns.subject) volume = self.api.endpoints["volume"].show(vn.volume_id) kwargs = {"kind": ns.noun.upper(), "volume_id": vn.volume_id} if ns.noun != "mgt": fs = self.api.endpoints["filesystem"].show(ns.filesystem) kwargs["filesystem_id"] = fs.id if ns.reformat: kwargs["reformat"] = True else: if volume["filesystem_type"]: raise ReformatVolumesConfirmationRequired([volume]) self.output(self.api_endpoint.create(**kwargs))
def add(self, ns): vn = self._resolve_volume_node(ns.subject) volume = self.api.endpoints['volume'].show(vn.volume_id) kwargs = {'kind': ns.noun.upper(), 'volume_id': vn.volume_id} if ns.noun != 'mgt': fs = self.api.endpoints['filesystem'].show(ns.filesystem) kwargs['filesystem_id'] = fs.id if ns.reformat: kwargs['reformat'] = True else: if volume['filesystem_type']: raise ReformatVolumesConfirmationRequired([volume]) self.output(self.api_endpoint.create(**kwargs))