示例#1
0
def main():
    # O modargs sempre espera que a chamada da linha de comando tenha sido
    # $ prog command args
    # Por isso ignoramos o primeiro item da tupla retornada por ele.

    _, params = args.parse(sys.argv[1:])

    _validate_params(params)

    user = os.environ['user']
    key =  os.environ['key']
    container = params.get('container', None)
    dryrun = params.get('dryrun', False)
    rule = params.get('rule', None)
    rule_param = params.get('ruleparam', None)

    rule_instance = AVAILABLE_RULES[rule](rule_param)

    try:
        deleted = collect(container=container, dryrun=dryrun, rule=rule_instance, user=user, key=key)
        print deleted
        print "Removing {0} objects from container {1}".format(len(deleted), container)
    except AuthenticationFailed as auth:
        print "User or API KEY wrong ", auth.message
    except NoSuchContainer as nocontainer:
        print "No such container: ", nocontainer.message
    except Exception as e:
        print "Ops, an error ocurred : ", e.message
        import traceback
        traceback.print_exc()
    sys.exit(0)
示例#2
0
    def test_specific_container(self):
        mock_obj1 = mock.MagicMock() 
        mock_obj1.name = 'mock1'

        mock_cont1 = mock.MagicMock() 
        mock_cont1.name = 'container1'
        mock_cont1.get_objects.return_value = [mock_obj1]

        mock_obj2 = mock.MagicMock() 
        mock_obj2.name = 'mock2'

        mock_cont2 = mock.MagicMock() 
        mock_cont2.name = 'container2'
        mock_cont2.get_objects.return_value = [mock_obj2]

        mock_conn = mock.MagicMock()
        mock_conn.get_all_containers.return_value = [mock_cont1, mock_cont2]
        mock_conn.get_container.return_value = mock_cont1

        with mock.patch('cloudfiles.get_connection', return_value=mock_conn):
            deleted = collect(rule=Rule(), container='container1', user=mock.ANY, key=mock.ANY)

        self.assertIn(mock.call.delete_object(mock_obj1.name), mock_cont1.method_calls)
        self.assertNotIn(mock.call.delete_object(mock_obj2.name), mock_cont2.method_calls)
        self.assertItemsEqual([mock_obj1.name], deleted)
示例#3
0
    def test_dryrun_yes_rule_true_does_not_collect(self):
        mock_obj = mock.MagicMock() 
        mock_obj.name = 'blargh'
        mock_cont = mock.MagicMock() 
        mock_cont.get_objects.return_value = [mock_obj]

        mock_conn = mock.MagicMock()
        mock_conn.get_all_containers.return_value = [mock_cont]
        mock_conn.get_container.return_value = mock_cont

        with mock.patch('cloudfiles.get_connection', return_value=mock_conn):
            deleted = collect(rule=Rule(), dryrun=True,user=mock.ANY, key=mock.ANY)

        self.assertNotIn(mock.call.delete_object(mock_obj.name), mock_cont.method_calls)
        self.assertItemsEqual([mock_obj.name], deleted)
示例#4
0
    def test_collect_applies_rule(self):
        mock_obj1 = mock.MagicMock() 
        mock_obj1.name = 'pref_name_suf'

        mock_obj2 = mock.MagicMock() 
        mock_obj2.name = 'noprefnosuf'

        mock_cont = mock.MagicMock() 
        mock_cont.get_objects.return_value = [mock_obj1, mock_obj2]

        mock_conn = mock.MagicMock()
        mock_conn.get_all_containers.return_value = [mock_cont]
        mock_conn.get_container.return_value = mock_cont

        with mock.patch('cloudfiles.get_connection', return_value=mock_conn):
            deleted = collect(rule=namehasprefix('pref')&namehassuffix('suf') ,user=mock.ANY, key=mock.ANY)

        self.assertIn(mock.call.delete_object(mock_obj1.name), mock_cont.method_calls)
        self.assertNotIn(mock.call.delete_object(mock_obj2.name), mock_cont.method_calls)
        self.assertItemsEqual([mock_obj1.name], deleted)