class TestControllerV(unittest.TestCase):
    """ Test storage controller related validations """

    IP = ""
    USERNAME = ""
    PASSWD = ""

    def setUp(self):
        """ Initialize controller validator """
        self.cntrlr_validator = ControllerV()

    def test_accessibility_ok(self):
        """ Check primary & secondary controller are reachable """
        self.cntrlr_validator.validate("accessible",
                                       [self.IP, self.USERNAME, self.PASSWD])

    def test_firmware_version_ok(self):
        """ Check controller bundle version """
        mc_expected = ["GN265", "GN280"]
        self.cntrlr_validator.validate(
            "firmware", [self.IP, self.USERNAME, self.PASSWD, mc_expected])

    def test_accessibility_no_args_error(self):
        """ Check 'accessible' validation type for no arguments """
        self.assertRaises(VError, self.cntrlr_validator.validate, 'accessible',
                          [])

    def test_incorrect_vtype(self):
        """ Check incorrect validation type """
        self.assertRaises(VError, self.cntrlr_validator.validate, 'dummy', [])

    def test_accessibility_auth_error(self):
        """ Check 'accessible' validation type for invalid user access """
        invalid_data = [self.IP, "tester007", "Tester!007"]
        self.assertRaises(VError, self.cntrlr_validator.validate, 'accessible',
                          invalid_data)

    def test_accessibility_conn_error(self):
        """ Check 'accessible' validation type for invalid ip """
        invalid_data = ["10.256.256.10", "tester007", "Tester!007"]
        self.assertRaises(VError, self.cntrlr_validator.validate, 'accessible',
                          invalid_data)

    def test_unsupported_bundle(self):
        """ Check 'accessible' validation for an unsupported bundle version of controller """
        mc_expected = ["GN000", "280GN"]
        self.assertRaises(VError, self.cntrlr_validator.validate, "firmware",
                          [self.IP, self.USERNAME, self.PASSWD, mc_expected])

    def test_web_service(self):
        # TODO: validate web service availability
        pass

    def tearDown(self):
        pass
Ejemplo n.º 2
0
def test_firmware_version_ok(args):
    mc_expected = ["GN265", "GN280"]
    c_validator = ControllerV()
    c_validator.validate("firmware",
                         [primary_ip, cntrlr_user, cntrlr_passwd, mc_expected])
    c_validator.validate(
        "firmware", [secondary_ip, cntrlr_user, cntrlr_passwd, mc_expected])
Ejemplo n.º 3
0
    def validate(self):
        """Check below requirements.

        1. Validate input configs
        2. Validate BMC connectivity
        3. Validate storage controller connectivity
        4. Validate network interface availability
        """
        machine_id = Utility.get_machine_id()
        mgmt_interfaces = []
        data_private_interfaces = []
        data_public_interfaces = []

        # Validate input/provisioner configs
        node_type = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX, "server_node>%s>type" % machine_id)
        cluster_id = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX, "server_node>%s>cluster_id" % machine_id)
        if node_type.lower() not in ["virtual", "vm"]:
            bmc_ip = Utility.get_config_value(
                PRVSNR_CONFIG_INDEX, "server_node>%s>bmc>ip" % machine_id)
            bmc_user = Utility.get_config_value(
                PRVSNR_CONFIG_INDEX, "server_node>%s>bmc>user" % machine_id)
            bmc_secret = Utility.get_config_value(
                PRVSNR_CONFIG_INDEX, "server_node>%s>bmc>secret" % machine_id)
            bmc_key = Cipher.generate_key(machine_id,
                                          ServiceTypes.SERVER_NODE.value)
            bmc_passwd = Cipher.decrypt(
                bmc_key, bmc_secret.encode("utf-8")).decode("utf-8")
            data_private_interfaces = Utility.get_config_value(
                PRVSNR_CONFIG_INDEX,
                "server_node>%s>network>data>private_interfaces" % machine_id)
            data_public_interfaces = Utility.get_config_value(
                PRVSNR_CONFIG_INDEX,
                "server_node>%s>network>data>public_interfaces" % machine_id)
        mgmt_public_fqdn = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "server_node>%s>network>management>public_fqdn" % machine_id)
        mgmt_interfaces = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "server_node>%s>network>management>interfaces" % machine_id)
        data_private_fqdn = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "server_node>%s>network>data>private_fqdn" % machine_id)
        data_public_fqdn = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "server_node>%s>network>data>public_fqdn" % machine_id)
        enclosure_id = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "server_node>%s>storage>enclosure_id" % machine_id)
        primary_ip = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "storage_enclosure>%s>controller>primary>ip" % enclosure_id)
        secondary_ip = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "storage_enclosure>%s>controller>secondary>ip" % enclosure_id)
        cntrlr_user = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "storage_enclosure>%s>controller>user" % enclosure_id)
        cntrlr_secret = Utility.get_config_value(
            PRVSNR_CONFIG_INDEX,
            "storage_enclosure>%s>controller>secret" % enclosure_id)
        cntrlr_key = Cipher.generate_key(enclosure_id,
                                         ServiceTypes.STORAGE_ENCLOSURE.value)
        cntrlr_passwd = Cipher.decrypt(
            cntrlr_key, cntrlr_secret.encode("utf-8")).decode("utf-8")

        # Validate BMC connectivity & storage controller accessibility
        if node_type.lower() not in ["virtual", "vm"]:
            NetworkV().validate("connectivity",
                                [bmc_ip, primary_ip, secondary_ip])
            BmcV().validate("accessible",
                            [socket.getfqdn(), bmc_ip, bmc_user, bmc_passwd])
            c_validator = ControllerV()
            c_validator.validate("accessible",
                                 [primary_ip, cntrlr_user, cntrlr_passwd])
            c_validator.validate("accessible",
                                 [secondary_ip, cntrlr_user, cntrlr_passwd])

        # Validate network fqdn reachability
        NetworkV().validate(
            "connectivity",
            [mgmt_public_fqdn, data_private_fqdn, data_public_fqdn])

        # Validate network interface availability
        for i_list in [
                mgmt_interfaces, data_private_interfaces,
                data_public_interfaces
        ]:
            self.validate_nw_cable_connection(i_list)
            self.validate_nw_interfaces(i_list)
 def setUp(self):
     """ Initialize controller validator """
     self.cntrlr_validator = ControllerV()
Ejemplo n.º 5
0
def test_controller_accessibility(args):
    c_validator = ControllerV()
    c_validator.validate("accessible",
                         [primary_ip, cntrlr_user, cntrlr_passwd])
    c_validator.validate("accessible",
                         [secondary_ip, cntrlr_user, cntrlr_passwd])