class ConfigCmd(Cmd):
    """Setup Config Cmd."""

    name = "config"

    def __init__(self, args):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)

    def process(self):
        self.elasticsearch.validate(self.name)
        rc = self.elasticsearch.config()
        return rc
class PostInstallCmd(Cmd):
    """PostInstall Setup Cmd."""

    name = "post_install"

    def __init__(self, args: dict):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)

    def process(self):
        self.elasticsearch.validate(self.name)
        rc = self.elasticsearch.post_install()
        return rc
class PrepareCmd(Cmd):
    """Prepare Setup Cmd."""

    name = "prepare"

    def __init__(self, args: dict):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)

    def process(self):
        rc = self.elasticsearch.prepare()
        return rc
class PostUpgradeCmd(Cmd):
    """Post Upgrade Setup Cmd."""

    name = "post_upgrade"

    def __init__(self, args):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)

    def process(self):
        rc = self.elasticsearch.post_upgrade()
        return rc
class ResetCmd(Cmd):
    """Reset Setup Cmd."""

    name = "reset"

    def __init__(self, args):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)

    def process(self):
        rc = self.elasticsearch.reset()
        return rc
class TestCmd(Cmd):
    """Test Setup Cmd."""

    name = "test"

    def __init__(self, args):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)

    def process(self):
        rc = self.elasticsearch.test()
        return rc
class CleanupCmd(Cmd):
    """Reset Setup Cmd."""

    name = "cleanup"

    @staticmethod
    def _add_extended_args(parser):
        parser.add_argument('--pre-factory',
                            action="store_true",
                            help='Factory cleanup.')

    def __init__(self, args):
        super().__init__(args)
        self.elasticsearch = Elasticsearch(args.config)
        self.pre_factory = args.pre_factory

    def process(self):
        rc = self.elasticsearch.cleanup(self.pre_factory)
        return rc
 def __init__(self, args: dict):
     super().__init__(args)
     self.elasticsearch = Elasticsearch(args.config)
 def __init__(self, args):
     super().__init__(args)
     self.elasticsearch = Elasticsearch(args.config)
     self.pre_factory = args.pre_factory