def _do_cleanup(self, noisy):
     screen('\nDoing Cleanup:', noisy)
     for item in self.obj_list:
         if item[0] == 'snap_id':
             cleanup_snapshot(self.client, item[1], noisy)
         if item[0] == 'vol_name':
             cleanup_vol(self.client, item[1], noisy)
Esempio n. 2
0
 def _do_cleanup(self, encrypt_vol_name, master_key_name, grp_id, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_vol(self.client, encrypt_vol_name, noisy)
     cleanup_master_key(self.client, master_key_name, noisy)
     grp = self.client.groups.get(grp_id)
     screen(
         '\tCurrent encryption: {}'.format(grp.attrs['encryption_config']),
         noisy)
 def _do_cleanup(self, acr_id, noisy):
     screen('\nDoing Cleanup:', noisy)
     acr = self.client.access_control_records.get(acr_id)
     cleanup_access_control_rec(self.client, acr.attrs['id'], noisy)
     self.acr_id = None
     cleanup_initiator_group(self.client, acr.attrs['initiator_group_name'],
                             noisy)
     cleanup_vol(self.client, acr.attrs['vol_name'],
                 noisy)  # Cleanup clone vol
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     screen('\nRunning:', self.noisy)
     try:
         create_vol(self.client, self.config[KEY_VOL], self.noisy)
         if self.cleanup:
             self._do_cleanup(self.config[KEY_VOL], self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
 def _do_generate_objects(self):
     screen('\nGenerating Objects...', self.noisy)
     vol_count = 2
     snap_count = 3
     temp_noisy = True
     vol_base_name = self.config[KEY_VOL]
     snap_base_name = self.config[KEY_SNAP]
     for i in range(vol_count):
         vol = create_vol(self.client, vol_base_name + str(i), temp_noisy)
         for j in range(snap_count):
             snap = create_snap(self.client, snap_base_name + str(i) + '.' + str(j), vol.attrs['id'], temp_noisy)
             self.obj_list.append(('snap_id', snap.attrs['id']))
         self.obj_list.append(('vol_name', vol.attrs['name']))
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     screen('\nRunning:', self.noisy)
     try:
         # Create a volume
         vol = create_vol(self.client, self.config[KEY_VOL], self.noisy)
         # Create a snapshot
         snap = create_snap(self.client, self.config[KEY_SNAP], vol.attrs['id'], self.noisy)
         if self.cleanup:
             self._do_cleanup(snap.id, vol.attrs['name'], self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     screen('\nRunning:', self.noisy)
     try:
         # Create a volume
         vol = create_vol(self.client, self.config[KEY_VOL], self.noisy)
         # Create an initiator group
         ig = create_initiator_group(self.client, self.config[KEY_IG], self.noisy)
         # Create the ACR
         acr = create_access_control_rec(self.client, ig.attrs['id'], vol.attrs['id'], self.noisy)
         if self.cleanup:
             self._do_cleanup(acr.attrs['id'], self.config[KEY_IG], self.config[KEY_VOL], self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
 def run(self, show_header=True):
     if show_header:
         screen('WORKFLOW: {}'.format(self.title), self.noisy)
         screen('\nRunning:', self.noisy)
     try:
         vol = create_vol(self.client, self.config[KEY_VOL], self.noisy)
         ig = create_initiator_group(self.client, self.config[KEY_IG],
                                     self.noisy)
         acr = create_access_control_rec(self.client, ig.attrs['id'],
                                         vol.attrs['id'], self.noisy)
         self.acr_id = acr.attrs['id']
         if self.cleanup:
             self._do_cleanup(acr.attrs['id'], self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     self._do_generate_objects()
     screen('\nRunning:', self.noisy)
     try:
         vol_list = self.client.volumes.list()
         screen('\n\tObjects on Array:', self.noisy)
         for vol in vol_list:
             screen('\t\tVOLUME: {}, Id: {}'.format(vol.attrs['name'], vol.attrs['id']), self.noisy)
             snap_list = self.client.snapshots.list(vol_name=vol.attrs['name'])
             for snap in snap_list:
                 screen('\t\t\tSNAPSHOT: {}, Id: {}'.format(snap.attrs['name'], snap.attrs['id']), self.noisy)
         if self.cleanup:
             self._do_cleanup(self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
Esempio n. 10
0
 def run(self, show_header=True):
     if show_header:
         screen('WORKFLOW: {}'.format(self.title), self.noisy)
         screen('\nRunning:', self.noisy)
     pubvol_wf = publish_volume(self.client, self.noisy, cleanup=False)
     pubvol_wf.run(show_header=False)
     acr_id = pubvol_wf.get_acr_id()
     try:
         # Get the ACR, we will need this to cleanup the initiator group
         acr = self.client.access_control_records.get(acr_id)
         cleanup_access_control_rec(self.client, acr_id, self.noisy)
         cleanup_initiator_group(self.client, acr.attrs['initiator_group_name'], self.noisy)
         cleanup_vol_prep(self.client, acr.attrs['vol_name'], self.noisy)
         cleanup_vol(self.client, acr.attrs['vol_name'], self.noisy)
         if self.cleanup:
             self.do_cleanup(self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
Esempio n. 11
0
def run_external(query_login, cleanup, noisy):
    if query_login:
        screen(
            '\nERROR: --query_login is not supported in external mode. Please modify {} instead.\n'
            .format(config_file), noisy)
        usage(noisy)
    cleanup_flag = '--cleanup' if cleanup is True else ''
    screen('\nRunning All Workflows Externally:', noisy)
    sep = '===================================================================================================='
    wf_list = _get_workflow_files()
    wf_count = len(wf_list)
    for i in range(len(wf_list)):
        screen('\n\n\n{}[{}/{}]'.format(sep, i + 1, wf_count), noisy)
        screen('{} {}'.format(wf_list[i], cleanup_flag), noisy)
        os.system('python3 {} {}'.format(wf_list[i], cleanup_flag))
Esempio n. 12
0
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     screen('\nRunning:', self.noisy)
     try:
         # Create Volume
         vol = create_vol(self.client, self.config[KEY_VOL], self.noisy)
         # Create a volume collection
         volcoll1 = create_volume_collection(self.client,
                                             self.config[KEY_VOLCOLL],
                                             self.noisy)
         # Associate a volume with the volume collection
         associate_vol(self.client, vol.id, volcoll1, self.noisy)
         # Create a protection schedule
         ps_name = self.config[KEY_PS]
         create_protection_schedule(self.client, ps_name,
                                    volcoll1.attrs['id'], self.noisy)
         if self.cleanup:
             self._do_cleanup(ps_name, self.config[KEY_VOLCOLL],
                              vol.attrs['name'], self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
Esempio n. 13
0
def run_internal(query_login, cleanup, noisy):
    screen('\nRunning All Workflows Internally:', noisy)
    client = login(query_login, noisy)
    sep = '===================================================================================================='
    wf_list = _get_workflows(client, noisy, cleanup)
    wf_count = len(wf_list)
    success_count = 0
    for i in range(len(wf_list)):
        screen('\n\n\n{}[{}/{}]'.format(sep, i + 1, wf_count), noisy)
        res = wf_list[i].run()
        if res:
            success_count += 1
    screen('\n\n{} of {} workflows SUCCEEDED'.format(success_count, wf_count),
           noisy)
    return success_count, wf_count
 def _do_cleanup(self, vol_name, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_vol(self.client, vol_name, noisy)
Esempio n. 15
0
 def _do_cleanup(self, ps_name, vc_name, vol_name, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_protection_schedule(self.client, ps_name, noisy)
     cleanup_volume_collection(self.client, vc_name, noisy)
     cleanup_vol(self.client, vol_name, noisy)
Esempio n. 16
0
        try:
            # Create Volume
            vol = create_vol(self.client, self.config[KEY_VOL], self.noisy)
            # Create a volume collection
            volcoll1 = create_volume_collection(self.client,
                                                self.config[KEY_VOLCOLL],
                                                self.noisy)
            # Associate a volume with the volume collection
            associate_vol(self.client, vol.id, volcoll1, self.noisy)
            # Create a protection schedule
            ps_name = self.config[KEY_PS]
            create_protection_schedule(self.client, ps_name,
                                       volcoll1.attrs['id'], self.noisy)
            if self.cleanup:
                self._do_cleanup(ps_name, self.config[KEY_VOLCOLL],
                                 vol.attrs['name'], self.noisy)
        except NimOSAPIError:
            traceback.print_exc()
            return False
        return True


if __name__ == '__main__':
    cur_noisy = True
    filename = os.path.basename(__file__)
    query_login, cleanup = handle_params(filename, sys.argv)
    client = login(query_login, cur_noisy)
    screen(' ', cur_noisy)
    wf = protect_volume(client, cur_noisy, cleanup)
    wf.run()
 def _do_cleanup(self, acr_id, ig_name, vol_name, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_access_control_rec(self.client, acr_id, noisy)
     cleanup_initiator_group(self.client, ig_name, noisy)
     cleanup_vol(self.client, vol_name, noisy)
Esempio n. 18
0
def usage(noisy):
    screen('Usage:', noisy)
    screen(
        '\t{} [--cleanup] [--query_login] [--internal | --external]'.format(
            __file__), noisy)
    sys.exit(1)
Esempio n. 19
0
 def do_cleanup(self, noisy):
     screen('\nDoing Cleanup:', noisy)
     screen('\tNo cleanup required for detach_volume workflow', noisy)
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     screen('\nRunning:', self.noisy)
     try:
         initiator_count = 0
         ig = create_initiator_group(self.client, self.config[KEY_IG],
                                     self.noisy)
         if ig.attrs['iscsi_initiators'] is not None:
             initiator_count = len(ig.attrs['iscsi_initiators'])
             screen('\tCurrent initiator count: {}'.format(initiator_count),
                    self.noisy)
             initiators = ig.attrs['iscsi_initiators']
         else:
             screen('\tCurrent initiator count: 0', self.noisy)
             initiators = []
         initiator_count += 1
         # Add an initiator to the list
         new_initiator = {
             "label":
             "wftest-itor" + str(initiator_count),
             "ip_address":
             "1.1.1." + str(initiator_count),
             "iqn":
             "iqn.1992-0" + str(initiator_count) +
             ".com.example:storage.tape1.sys1.xyz"
         }
         initiators.append(new_initiator)
         # Note that we re-assign ig so as to capture the update
         ig = self.client.initiator_groups.update(
             id=ig.attrs['id'],
             description='add initiators',
             iscsi_initiators=initiators)
         screen(
             '\tAdded initiator "{}": {}'.format(
                 ig.attrs['iscsi_initiators'][-1]['label'], initiators[-1]),
             self.noisy)
         screen(
             '\tCurrent initiator count: {}'.format(
                 len(ig.attrs['iscsi_initiators'])), self.noisy)
         if self.cleanup:
             self._do_cleanup(self.config[KEY_IG], self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
 def _do_cleanup(self, ig_name, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_initiator_group(self.client, ig_name, noisy)
 def _do_cleanup(self, clone_name, vol_name, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_vol(self.client, clone_name, noisy)
     cleanup_snapshots(self.client, vol_name, noisy)
     cleanup_vol(self.client, vol_name, noisy)
Esempio n. 23
0
 def run(self):
     screen('WORKFLOW: {}'.format(self.title), self.noisy)
     screen('\nRunning:', self.noisy)
     try:
         # Get a group and default encryption
         grp_list = self.client.groups.list()
         if len(grp_list) == 0:
             screen('\tERROR: No groups configured on this system.')
             screen(
                 '\t       A group must be configured in order to configure encryption.'
             )
             return
         grp_id = grp_list[0].attrs['id']
         grp = self.client.groups.get(grp_id)
         screen(
             '\tGot group: "{}", Id: {}'.format(grp.attrs['name'], grp.id),
             self.noisy)
         orig_encryption = grp.attrs['encryption_config']
         screen('\tCurrent encryption:  {}'.format(orig_encryption),
                self.noisy)
         # Create a master key and create an encrypted volume
         create_master_key(self.client, self.config[KEY_MK],
                           self.config[KEY_MK_PHRASE], self.noisy)
         create_encrypted_vol(self.client, self.config[KEY_ENCRYPT_VOL],
                              self.noisy)
         grp = self.client.groups.get(grp_id)
         updated_encryption = grp.attrs['encryption_config']
         if updated_encryption != orig_encryption:
             screen('\tUpdated encryption:  {}'.format(updated_encryption),
                    self.noisy)
         # Modify the encryption (for test)
         mod_encryption = grp.attrs['encryption_config']
         mod_encryption.pop('master_key_set')
         mod_encryption.pop('encryption_active')
         mod_encryption.pop('encryption_key_manager', None)
         if mod_encryption['mode'] == 'available':
             mod_encryption['mode'] = 'secure'
         elif mod_encryption['mode'] == 'secure':
             mod_encryption['mode'] = 'available'
         ue = self.client.groups.update(id=grp.id,
                                        encryption_config=mod_encryption)
         screen(
             '\tModified encryption: {}'.format(
                 ue.attrs['encryption_config']), self.noisy)
         if self.cleanup:
             self._do_cleanup(self.config[KEY_ENCRYPT_VOL],
                              self.config[KEY_MK], grp_id, self.noisy)
     except NimOSAPIError:
         traceback.print_exc()
         return False
     return True
 def _do_cleanup(self, snap_id, vol_name, noisy):
     screen('\nDoing Cleanup:', noisy)
     cleanup_snapshot(self.client, snap_id, noisy)
     cleanup_vol(self.client, vol_name, noisy)