Exemplo n.º 1
0
    def _init_features(self):
        """Sets up and initializes E-Series feature support map."""
        self.features = na_utils.Features()
        self.api_operating_mode, self.api_version = self.get_eseries_api_info(
            verify=False)

        api_version_tuple = tuple(int(version)
                                  for version in self.api_version.split('.'))

        asup_api_valid_version = self._validate_version(
            self.ASUP_VALID_VERSION, api_version_tuple)

        ssc_api_valid_version = any(self._validate_version(valid_version,
                                                           api_version_tuple)
                                    for valid_version
                                    in self.SSC_VALID_VERSIONS)

        self.features.add_feature('AUTOSUPPORT',
                                  supported=asup_api_valid_version,
                                  min_version=self._version_tuple_to_str(
                                      self.ASUP_VALID_VERSION))
        self.features.add_feature('SSC_API_V2',
                                  supported=ssc_api_valid_version,
                                  min_version=self._version_tuple_to_str(
                                      self.SSC_VALID_VERSIONS[0]))
Exemplo n.º 2
0
 def _init_features(self):
     """Set up the repository of available Data ONTAP features."""
     self.features = na_utils.Features()
Exemplo n.º 3
0
class FakeEseriesClient(object):
    features = na_utils.Features()

    def __init__(self, *args, **kwargs):
        self.features.add_feature('AUTOSUPPORT')
        self.features.add_feature('SSC_API_V2')
        self.features.add_feature('REST_1_3_RELEASE')
        self.features.add_feature('REST_1_4_RELEASE')

    def list_storage_pools(self):
        return STORAGE_POOLS

    def register_storage_system(self, *args, **kwargs):
        return {
            'freePoolSpace': '17055871480319',
            'driveCount': 24,
            'wwn': '60080E500023C73400000000515AF323',
            'id': '1',
            'hotSpareSizeAsString': '0',
            'hostSparesUsed': 0,
            'types': '',
            'hostSpareCountInStandby': 0,
            'status': 'optimal',
            'trayCount': 1,
            'usedPoolSpaceAsString': '37452115456',
            'ip2': '10.63.165.216',
            'ip1': '10.63.165.215',
            'freePoolSpaceAsString': '17055871480319',
            'hotSpareCount': 0,
            'hotSpareSize': '0',
            'name': 'stle2600-7_8',
            'usedPoolSpace': '37452115456',
            'driveTypes': ['sas'],
            'unconfiguredSpaceByDriveType': {},
            'unconfiguredSpaceAsStrings': '0',
            'model': '2650',
            'unconfiguredSpace': '0'
        }

    def list_volume(self, volume_id):
        return VOLUME

    def list_volumes(self):
        return [VOLUME]

    def delete_volume(self, vol):
        pass

    def create_host_group(self, name):
        return MULTIATTACH_HOST_GROUP

    def get_host_group(self, ref):
        return MULTIATTACH_HOST_GROUP

    def list_host_groups(self):
        return [MULTIATTACH_HOST_GROUP, FOREIGN_HOST_GROUP]

    def get_host_group_by_name(self, name, *args, **kwargs):
        host_groups = self.list_host_groups()
        return [host_group for host_group in host_groups
                if host_group['label'] == name][0]

    def set_host_group_for_host(self, *args, **kwargs):
        pass

    def create_host_with_ports(self, *args, **kwargs):
        return HOST

    def list_hosts(self):
        return [HOST, HOST_2]

    def get_host(self, *args, **kwargs):
        return HOST

    def create_volume(self, *args, **kwargs):
        return VOLUME

    def create_volume_mapping(self, *args, **kwargs):
        return VOLUME_MAPPING

    def get_volume_mappings(self):
        return [VOLUME_MAPPING]

    def get_volume_mappings_for_volume(self, volume):
        return [VOLUME_MAPPING]

    def get_volume_mappings_for_host(self, host_ref):
        return [VOLUME_MAPPING]

    def get_volume_mappings_for_host_group(self, hg_ref):
        return [VOLUME_MAPPING]

    def delete_volume_mapping(self):
        return

    def move_volume_mapping_via_symbol(self, map_ref, to_ref, lun_id):
        return {'lun': lun_id}

    def list_storage_system(self):
        return STORAGE_SYSTEM

    def list_storage_systems(self):
        return [STORAGE_SYSTEM]

    def list_snapshot_groups(self):
        return [SNAPSHOT_GROUP]

    def list_snapshot_images(self):
        return [SNAPSHOT_IMAGE]

    def list_snapshot_image(self, *args, **kwargs):
        return SNAPSHOT_IMAGE

    def create_cg_snapshot_view(self, *args, **kwargs):
        return SNAPSHOT_VOLUME

    def list_host_types(self):
        return [
            {
                'id': '4',
                'code': 'AIX',
                'name': 'AIX',
                'index': 4
            },
            {
                'id': '5',
                'code': 'IRX',
                'name': 'IRX',
                'index': 5
            },
            {
                'id': '6',
                'code': 'LnxALUA',
                'name': 'LnxALUA',
                'index': 6
            }
        ]

    def list_hardware_inventory(self):
        return HARDWARE_INVENTORY

    def get_eseries_api_info(self, verify=False):
        return 'Proxy', '1.53.9010.0005'

    def set_counter(self, key, value):
        pass

    def add_autosupport_data(self, *args):
        pass

    def get_serial_numbers(self):
        return FAKE_ASUP_DATA.get('controller1-serial'), FAKE_ASUP_DATA.get(
            'controller2-serial')

    def get_model_name(self):
        pass

    def api_operating_mode(self):
        pass

    def get_firmware_version(self):
        return FAKE_ASUP_DATA['system-version']

    def create_volume_copy_job(self, *args, **kwargs):
        return VOLUME_COPY_JOB

    def list_vol_copy_job(self, *args, **kwargs):
        return VOLUME_COPY_JOB

    def delete_vol_copy_job(self, *args, **kwargs):
        pass

    def create_snapshot_image(self, *args, **kwargs):
        return SNAPSHOT_IMAGE

    def create_snapshot_volume(self, *args, **kwargs):
        return SNAPSHOT_VOLUME

    def list_snapshot_volumes(self, *args, **kwargs):
        return [SNAPSHOT_VOLUME]

    def list_snapshot_volume(self, *args, **kwargs):
        return SNAPSHOT_IMAGE

    def create_snapshot_group(self, *args, **kwargs):
        return SNAPSHOT_GROUP

    def list_snapshot_group(self, *args, **kwargs):
        return SNAPSHOT_GROUP

    def delete_snapshot_volume(self, *args, **kwargs):
        pass

    def list_target_wwpns(self, *args, **kwargs):
        return [WWPN_2]

    def update_stored_system_password(self, *args, **kwargs):
        pass

    def update_snapshot_volume(self, *args, **kwargs):
        return SNAPSHOT_VOLUME

    def delete_snapshot_image(self, *args, **kwargs):
        pass

    def delete_snapshot_group(self, *args, **kwargs):
        pass

    def restart_snapshot_volume(self, *args, **kwargs):
        pass

    def create_consistency_group(self, *args, **kwargs):
        return FAKE_CONSISTENCY_GROUP

    def delete_consistency_group(self, *args, **kwargs):
        pass

    def list_consistency_groups(self, *args, **kwargs):
        return [FAKE_CONSISTENCY_GROUP]

    def remove_consistency_group_member(self, *args, **kwargs):
        pass

    def add_consistency_group_member(self, *args, **kwargs):
        pass

    def list_backend_store(self, key):
        return {}

    def save_backend_store(self, key, val):
        pass

    def create_consistency_group_snapshot(self, *args, **kwargs):
        return [SNAPSHOT_IMAGE]

    def get_consistency_group_snapshots(self, *args, **kwargs):
        return [SNAPSHOT_IMAGE]

    def delete_consistency_group_snapshot(self, *args, **kwargs):
        pass
Exemplo n.º 4
0
 def setUp(self):
     super(FeaturesTestCase, self).setUp()
     self.features = na_utils.Features()