Ejemplo n.º 1
0
    def test_controller_goes_down(self):
        '''
            Test the request on sessions if the controller goes down
            Does the request on the sessions work when the controller comes back up
        '''
        switch_mode(user='******', password='******')
        logger.info('Configuring cloud, This may take sometime..')
        setup_cloud(wait_for_cloud_ready=True)
        config = get_config()
        mode = config.get_mode()
        controller = config.get_vm_of_type('controller')[0]
        session = rest.get_session()
        data_1 = rest.get('serviceengine')

        cloud_obj = config.testbed[mode['site_name']].cloud_obj[mode['cloud']]
        controller_name = controller.name
        cloud_obj.powerOffVM(controller_name)
        try:
            rest.get('serviceengine')
        except Exception as e:
            logger.info('Expected ReadTimeout: ' + str(e))
        cloud_obj.powerOnVM(controller_name)
        wait_until_n_cluster_nodes_ready()
        data_2 = rest.get('serviceengine')
        assert data_1 == data_2
Ejemplo n.º 2
0
    def test_traffic_with_security_policy_setup(self):
        start_index = self.public_port_range_start + 3000

        tenant = mesos_lib.get_tenant_for_container()
        infra_utils.switch_mode(tenant=tenant)
        mesos_lib.create_app('t2',
                             num_apps=6,
                             num_instances=1,
                             northsouth=self.northsouth,
                             ns_service_port=80,
                             ew_service_port_start_index=start_index,
                             network='net1',
                             verify_dns=True,
                             dns_vs_vip=self.dns_vs_vip)
        ms_lib.add_security_policy_to_vs(
            't2-1',
            ms_name=['t2-2-microservice', 't2-3-microservice'],
            policy_name='t2-1-networksecuritypolicy',
            deny=1)
        ms_lib.add_security_policy_to_vs(
            't2-2',
            ms_name=['t2-4-microservice', 't2-5-microservice'],
            policy_name='t2-2-networksecuritypolicy',
            deny=0)
        vs_lib.create_application_obj('app1')
        vs_lib.create_application_obj('app2')
        vs_lib.add_vs_to_application('app1', ['t2-1', 't2-2'])
        vs_lib.add_vs_to_application('app2', ['t2-4', 't2-5'])
Ejemplo n.º 3
0
def create_new_user():
    switch_mode(user='******', password='******')
    clear_session()
    user_data = json.dumps({
        'full_name':
        'test-user-1',
        'is_active':
        True,
        'password':
        '******',
        'username':
        '******',
        'access': [{
            'role_ref': "/api/role/?name=System-Admin",
            'tenant_ref': "/api/tenant/?name=admin"
        }],
        'default_tenant_ref':
        "/api/tenant/?name=admin"
    })
    rest.post('user', data=user_data)
    clear_session()

    yield

    clear_session(all_sessions=True)
    switch_mode(user='******', password='******')
    rest.delete('user', name='test-user-1')
Ejemplo n.º 4
0
 def test_traffic_cleanup(self):
     tenant = mesos_lib.get_tenant_for_container()
     infra_utils.switch_mode(tenant=tenant)
     mesos_lib.delete_app(self.app_prefix,
                          num_apps=self.num_apps,
                          dns_suffix='avi-container-dns.internal',
                          verify_dns=True,
                          dns_vs_vip=self.dns_vs_vip)
Ejemplo n.º 5
0
def set_cloud_vip_static_routes(cloud_name='Default-Cloud'):
    """

    :param cloud_name:
    :return:
    """
    leader_vm = get_cluster_master_vm()
    session = rest.create_session(controller=leader_vm)
    infra_utils.switch_mode(session=session)
    rest.update('cloud', name=cloud_name, enable_vip_static_routes=True)
Ejemplo n.º 6
0
 def test_dns(self):
     vs_list = [
         self.app_prefix + '-1', self.app_prefix + '-2',
         self.app_prefix + '-3', self.app_prefix + '-4',
         self.app_prefix + '-5', self.app_prefix + '-6'
     ]
     tenant = mesos_lib.get_tenant_for_container()
     infra_utils.switch_mode(tenant=tenant)
     # REVIEW why is this commented out?
     vs_lib.check_for_vs(vs_list,
                         verify_dns=True,
                         dns_vs_vip=self.dns_vs_vip)
Ejemplo n.º 7
0
    def test_basic_traffic_setup(self):
        start_index = self.public_port_range_start + 1000

        tenant = mesos_lib.get_tenant_for_container()
        infra_utils.switch_mode(tenant=tenant)
        mesos_lib.create_app(self.app_prefix,
                             num_apps=self.num_apps,
                             num_instances=1,
                             northsouth=self.northsouth,
                             ns_service_port=80,
                             ew_service_port_start_index=start_index,
                             network='net1')
Ejemplo n.º 8
0
 def test_traffic_with_security_policy_cleanup(self):
     tenant = mesos_lib.get_tenant_for_container()
     infra_utils.switch_mode(tenant=tenant)
     vs_lib.delete_application_obj('app1')
     vs_lib.delete_application_obj('app2')
     mesos_lib.delete_app('t2',
                          num_apps=6,
                          dns_suffix='avi-container-dns.internal',
                          verify_dns=True,
                          dns_vs_vip=self.dns_vs_vip)
     # these msg were created as part of add_security_policy_to_vs; should be deleted now
     ms_lib.delete_microservice_group('vs-msg-t2-1')
     ms_lib.delete_microservice_group('vs-msg-t2-2')
Ejemplo n.º 9
0
    def test_switch_mode_session(self):
        '''
            switch mode session and test if the requests on the session go through correctly
        '''
        switch_mode(user='******', password='******')
        session = rest.get_session()
        clear_session()
        switch_mode(password='******')
        try:
            rest.get('serviceengine')
        except Exception as e:
            logger.info("authentication error expected: " + str(e))
        else:
            assert 0, "Session is not getting updated based on password"
        switch_mode(session=session)
        rest.get('serviceengine')

        # REVIEW: Once session in mode is set, no further switch_mode works
        switch_mode(user='******', password='******')
        try:
            rest.get('serviceengine')
        except Exception as e:
            logger.info("authentication error expected: " + str(e))
        else:
            assert 0, "Once switched on session, no other switch mode works"
        clear_session(all_sessions=True)
Ejemplo n.º 10
0
    def test_create_session(self, create_new_user):
        '''
            Test create_session
                - Test if create_sesion returns the correct session in various modes
        '''
        switch_mode(user='******', password='******')
        session = rest.create_session()
        assert session.username == 'test-user-1' and session.password == 'avi123'
        session.get('serviceengine')

        switch_mode(user='******', password='******')
        session = rest.create_session()
        assert session.username == 'admin' and session.password == 'avi123'
        session.get('serviceengine')
Ejemplo n.º 11
0
def get_and_delete_all_configs(skip_cloud=False, check_status_code=False, tenant_list=[], fix_url=True, **kwargs):
    move_all_se_to_group('Default-Group')

    session = get_session()
    config = AviConfig.get_instance()
    defaults = get('default-values').json()
    logger.info(defaults)
    tenant_resp = get('tenant').json()
    if not tenant_list:
        tenants = []
        tenants = [str(entry['name']) for entry in tenant_resp.get('results', [])]
    else:
        tenants = tenant_list

    for _tenant in tenants:
        switch_mode(tenant=_tenant)
        for obj_type in reversed(obj_order):
            if (((obj_type == 'cloud' or obj_type == 'tenant') and skip_cloud) or
                    (obj_type in ['sslcertificaterequest', 'staticroute'])):
                continue
            status_code, data = get(obj_type, check_status_code=check_status_code)
            if status_code > 400:
                continue
            for d in data['results']:
                if obj_type == 'cloud' and d['name'] == 'Default-Cloud':
                    if d['vtype'] != 'CLOUD_NONE':
                        logger.info('Update Default-Cloud from %s to no-access' % d['vtype'])
                        if d.get('vcenter_configuration'):
                            d.pop('vcenter_configuration')
                        elif d.get('openstack_configuration'):
                            d.pop('openstack_configuration')
                        elif d.get('aws_configuration'):
                            d.pop('aws_configuration')
                        elif d.get('cloudstack_configuration'):
                            d.pop('cloudstack_configuration')
                        elif d.get('vca_configuration'):
                            d.pop('vca_configuration')
                        elif d.get('apic_configuration'):
                            d.pop('apic_configuration')
                        d['vtype'] = 'CLOUD_NONE'
                        put('cloud', name=d['name'], data=json.dumps(d))  # review can we use uuid=d['uuid']?
                if obj_type in defaults.get('default', []) and \
                                d['uuid'] in defaults['default'][obj_type]:
                    continue
                logger.info('Deleting: %s:%s' % (obj_type, d['name']))
                if obj_type in ['sslcertificaterequest', 'sslkeyandcertificate_import']:
                    delete('sslkeyandcertificate', name=d['name'], check_status_code=False)
                else:
                    delete(obj_type, name=d['name'], check_status_code=False)
Ejemplo n.º 12
0
    def test_clear_session_basic(self):
        '''
            Basic usage of clear_session
        '''
        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        config = get_config()
        session = rest.get_session()
        switch_mode(session=session)
        assert config.sessions and config.session

        clear_session()
        config = get_config()
        context_key = config.get_context_key()
        assert config.session is None and context_key not in config.sessions
Ejemplo n.º 13
0
    def test_switch_mode_user(self, create_new_user):
        '''
            Switch mode user and test if the session is updated correctly based on mode user
        '''
        switch_mode(user='******', password='******')
        se_1 = rest.get('serviceengine')
        session = rest.get_session()
        assert session.username == 'admin' and session.password == 'avi123'

        switch_mode(user='******')
        se_2 = rest.get('serviceengine')
        session = rest.get_session()
        assert se_1 == se_2
        assert session.username == 'test-user-1' and session.password == 'avi123'
        clear_session(all_sessions=True)
Ejemplo n.º 14
0
 def test_session_expiry(self):
     '''
         Tests requests on expired sessions
     '''
     switch_mode(user='******', password='******')
     data = json.dumps({'api_idle_timeout': 1})
     rest.put('controllerproperties', data=data)
     clear_session()
     data_1 = rest.get('serviceengine')
     time.sleep(2 * 60)
     data_2 = rest.get('serviceengine')
     assert data_1 == data_2
     time.sleep(21 * 60)
     data_1 = rest.get('serviceengine')
     assert data_1 == data_2
Ejemplo n.º 15
0
def reboot_clean(update_admin_info=True, **kwargs):
    post('cluster', path='reboot', data=json.dumps({'mode': 'REBOOT_CLEAN'}))
    asleep(msg="Sleep before cluster wait check", delay=120)
    wait_until_cluster_ready()
    set_sysadmin_public_key()
    set_systemconfiguration()
    set_ha_mode_best_effort()
    if update_admin_info:
        config = AviConfig.get_instance()
        mode = config.get_mode()
        logger.debug("Current Default Mode %s" % mode)
        username = mode['user']
        password = '******'
        mode["password"] = '******'
        update_admin_user(username=username, password=password)
    switch_mode(**mode)
Ejemplo n.º 16
0
    def test_update_profiles(self):
        vs_1 = 'ma1-1'
        vs_2 = 'ma1-2'

        tenant = mesos_lib.get_tenant_for_container()
        infra_utils.switch_mode(tenant=tenant)
        # Update apps to different app and nw profiles (1 NS and 1 EW)
        mesos_lib.update_app_app_profile(vs_1, 'test-app-profile')
        mesos_lib.update_app_nw_profile(vs_1, 'test-nw-profile')
        mesos_lib.update_app_app_profile(vs_2, 'test-app-profile')
        mesos_lib.update_app_nw_profile(vs_2, 'test-nw-profile')

        # Change apps' profiles to earlier ones: System-HTTP, System-TCP-Proxy
        mesos_lib.update_app_app_profile(vs_1, 'System-HTTP')
        mesos_lib.update_app_nw_profile(vs_1, 'System-TCP-Proxy')
        mesos_lib.update_app_app_profile(vs_2, 'System-HTTP')
        mesos_lib.update_app_nw_profile(vs_2, 'System-TCP-Proxy')
Ejemplo n.º 17
0
    def test_switch_mode_password(self):
        '''
            switch mode password and test if the session is updated correctly based on mode password
        '''
        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        session = rest.get_session()
        assert session.username == 'admin' and session.password == 'avi123'

        # REVIEW: switch_mode on password does nothing as of now
        switch_mode(password='******')
        try:
            rest.get('serviceengine')
        except Exception as e:
            logger.info("authentication error expected: " + str(e))
        else:
            assert 0, "Session is not getting updated based on password"
        clear_session()
Ejemplo n.º 18
0
    def test_update_admin_user_performance(self):
        '''
            Test update admin user performance
                Reports time taken for update_admin_user when
                    - the admin user password is already set to avi123 correctly
                    - the admin user password needs to be changed to avi123
        '''
        switch_mode(user='******', password='******')
        ts = time.time()
        rest.update_admin_user('admin', 'avi123', 'admin')
        logger.info(
            "Password is already avi123 - update_admin_user took %2.2f seconds"
            % (time.time() - ts))

        rest.update_admin_user('admin', 'admin', 'avi123')
        switch_mode(user='******', password='******')
        ts = time.time()
        rest.update_admin_user('admin', 'avi123', 'admin')
        logger.info(
            "updating password to avi123 - update_admin_user took %2.2f seconds"
            % (time.time() - ts))
        rest.update_admin_user('admin', 'avi123', 'admin')
Ejemplo n.º 19
0
    def test_clear_session_two_users(self, create_new_user):
        '''
            test_clear_session_two_users
                - Test clear_session with two user sessions
                - When all_sessions=True is passed, all the existing sessions should be removed
        '''
        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        config = get_config()
        context_key_admin = config.get_context_key()

        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        context_key_test_user = config.get_context_key()

        assert context_key_test_user in config.sessions and context_key_admin in config.sessions
        clear_session()
        assert context_key_test_user not in config.sessions and context_key_admin in config.sessions
        rest.get('serviceengine')
        assert context_key_test_user in config.sessions and context_key_admin in config.sessions
        clear_session(all_sessions=True)
        assert context_key_test_user not in config.sessions and context_key_admin not in config.sessions
        clear_session(all_sessions=True)
Ejemplo n.º 20
0
    def test_clear_session_two_users(self, create_new_user):
        '''
            Test clear_session
                - By default, clear_session() clears the current mode's session
                - When all_sessions=True is passed, it should clear all existing sessions
        '''
        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        config = get_config()
        context_key_admin = config.get_context_key()

        switch_mode(user='******', password='******')
        se_1 = rest.get('serviceengine')
        context_key_test_user = config.get_context_key()

        assert context_key_test_user in config.sessions and context_key_admin in config.sessions
        clear_session()
        assert context_key_test_user not in config.sessions and context_key_admin in config.sessions
        se_2 = rest.get('serviceengine')
        assert se_1 == se_2
        assert context_key_test_user in config.sessions and context_key_admin in config.sessions
        clear_session(all_sessions=True)
        assert context_key_test_user not in config.sessions and context_key_admin not in config.sessions
        clear_session(all_sessions=True)
Ejemplo n.º 21
0
 def test_get_cloud_context(self):
     '''
         Test get_cloud_context
     '''
     switch_mode(user='******', password='******')
     cloud_old = rest.get_cloud_context()
     switch_mode(cloud='Vmware-Cloud')
     cloud = rest.get_cloud_context()
     assert cloud == 'Vmware-Cloud'
     switch_mode(cloud=cloud_old)
Ejemplo n.º 22
0
 def test_get_api_version(self):
     '''
         Test get_api_version
     '''
     switch_mode(user='******', password='******')
     version_old = rest.get_api_version()
     switch_mode(version='17.2.5')
     version = rest.get_api_version()
     assert version == '17.2.5'
     switch_mode_default()
     version = rest.get_api_version()
     assert version == version_old
     switch_mode(version=version_old)
Ejemplo n.º 23
0
    def test_get_session(self, create_new_user):
        '''
            Test get_session
                - Test if it returns the already created session if it exists
                - If there is no already created session, it should create a new session and return
        '''
        switch_mode(user='******', password='******')
        se_1 = rest.get('serviceengine')
        session_test_user = rest.get_session()

        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        session = rest.get_session()
        assert session.username == 'admin' and session.password == 'avi123'

        switch_mode(user='******')
        se_2 = rest.get('serviceengine')
        session = rest.get_session()
        assert session is session_test_user and se_1 == se_2
        clear_session(all_sessions=True)
Ejemplo n.º 24
0
    def test_update_admin_user(self, create_new_user):
        '''
            Test update_admin_user
                - Test if it updates the user password correctly
                - Test if it updates the user password correctly when mode user is not the same as the passed username
        '''
        switch_mode(user='******', password='******')
        se_1 = rest.get('serviceengine')
        rest.update_admin_user('test-user-1', 'Test123', 'avi123')
        clear_session()

        # REVIEW:
        #   when the passed username to update_admin_user is not the same as mode user
        #       - update_admin_user fails
        #       - Also, sets wrong password on the mode
        # Should this be fixed?
        switch_mode(user='******', password='******')
        rest.update_admin_user('test-user-1', 'avi123', 'Test123')

        switch_mode(user='******', password='******')
        se_2 = rest.get('serviceengine')
        assert se_1 == se_2
Ejemplo n.º 25
0
    def test_clear_session_making_get_request(self):
        '''
            test_clear_session_making_get_requests
                - Make a get request after clear_session and verify that the request uses mode user and password
        '''
        switch_mode(user='******', password='******')
        rest.get('serviceengine')
        session = rest.get_session()

        switch_mode(password='******')
        # This should pass because it uses already created session
        rest.get('serviceengine')
        clear_session()
        try:
            # This should fail during authentication(uses password Temp123)
            rest.get('serviceengine')
        except Exception as e:
            logger.info('Authentication failure expected: ' + str(e))
        else:
            assert 0, 'Sessions are not cleared, Still using password avi123'

        switch_mode(password='******')
        clear_session()
Ejemplo n.º 26
0
    def test_clear_session_making_get_request(self):
        '''
            Test if get() requests work as expected after clearing sessions
        '''
        switch_mode(user='******', password='******')
        se_1 = rest.get('serviceengine')
        session = rest.get_session()

        switch_mode(password='******')
        # This should pass because it uses already created session
        se_2 = rest.get('serviceengine')
        assert se_1 == se_2
        clear_session()
        try:
            # This should fail during authentication(uses password Temp123)
            rest.get('serviceengine')
        except Exception as e:
            logger.info('Authentication failure expected: ' + str(e))
        else:
            assert 0, 'Sessions are not cleared, Still using password avi123'

        switch_mode(password='******')
        clear_session()
Ejemplo n.º 27
0
 def test_delete_configs(self):
     infra_utils.switch_mode(tenant='admin')
     mesos_lib.delete_dns_vs_if_needed(self.dns_vs)
     infra_utils.delete_config(self.config_file)
Ejemplo n.º 28
0
def collect_techsupport(c_list,
                        dest_path,
                        jobname,
                        jobnum,
                        techsupport_type='debuglogs',
                        is_baremetal=False):
    """

    :param c_list:
    :param dest_path:
    :param jobname:
    :param jobnum:
    :param techsupport_type:
    :param is_baremetal:
    :return:
    """

    instance_type = 'Controllers' if techsupport_type == 'debuglogs' else 'SEs'
    logger.info('Collecting tech-support from the %s' % instance_type)
    jobnum = str(jobnum)
    for c_ip in c_list:
        c_port = 443
        if ':' in c_ip:
            c_ip, c_port = c_ip.split(':')
        if dest_path is None:
            dest_path = '/mnt/files/robot-results/latest/' + jobname

        date_time = time.strftime("%Y%m%d-%H%M%S")
        folder_name = 'jobname_' + jobname + '_jobnum_' + jobnum
        subprocess.call('mkdir -p ' + dest_path + '/' + folder_name,
                        shell=True)
        dest = dest_path + '/' + folder_name + '/techsupport_' + c_ip + '_' + date_time + '.tar'

        subprocess.call('touch ' + dest, shell=True)
        subprocess.call('chmod 757 ' + dest, shell=True)
        logger.info('on controller %s and saving at %s \n' % (c_ip, dest))
        uri = 'techsupport/%s' % techsupport_type
        logger.info('URI: %s' % uri)
        try:
            status_code, rsp = rest.get(uri)
        except:
            infra_utils.switch_mode(user='******', password='******')
            status_code, rsp = rest.get(uri)
        infra_utils.switch_mode(user='******', password='******')
        controller_error = []
        if rsp:
            with open(dest, 'wb') as f:
                for chunk in rsp.iter_content(chunk_size=1024):
                    if chunk:
                        f.write(chunk)
                        f.flush()
        else:
            logger.info('Tech support collection failed - status %s' %
                        status_code)
            if is_baremetal:
                c_ip = c_ip + ':5098'
            try:
                execute(scp_techsupport, dest_path=dest, hosts=[c_ip])
            except:
                try:
                    env.password = '******'
                    execute(scp_techsupport, dest_path=dest, hosts=[c_ip])
                except Exception as e:
                    msg_error = 'Tech support collection failed on node %s - error %s \n' % (
                        c_ip, e)
                    logger.info(msg_error)
                    controller_error.append(msg_error)
        if controller_error:
            logger_utils.fail(controller_error)
        logger.info('\n    DONE \n')