Esempio n. 1
0
    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))
Esempio n. 2
0
    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))
Esempio n. 3
0
    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))