Пример #1
0
def do_list(args):
    """
    list transactions of code smell family

    Args:
        args (array) arguments
    """
    if args.type is not None and args.type not in ('code_smell', 'proposal', 'vote'):
        raise CodeSmellException("Incorrect Transaction Type")
    if args.type in ('code_smell', 'vote') and args.active is not None:
        raise CodeSmellException("Incorrect parms combination")

    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME)

    if args.active is not None:
        transactions = client.list(txn_type=args.type, active_flag=1)
    else:
        transactions = client.list(txn_type=args.type)

    if len(transactions) == 0:
        raise CodeSmellException("No transactions found")
    else:
        print (transactions)
Пример #2
0
def do_vote(args):
    """
    cast vote to accept or reject a code measure proposal

    Args:
        args (array) arguments<proposalid, vote>
    """
    if args.view is None:
        if args.id is None:
            raise CodeSmellException("Missing proposal ID")
        if args.vote is None:
            raise CodeSmellException("Missing VOTE")
        if args.vote == 'yes':
            vote = 1
        else:
            vote = 0

    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME)

    if args.vote:
        response = client.vote(proposal_id=args.id, vote=vote)
    else:
        response = client.check_votes(proposal_id=args.view)

    print("Response: {}".format(response))
Пример #3
0
def do_vote(args):
    """
    cast vote to accept or reject a code measure proposal
    user can also check the amount of votes of a specific proposal

    Args:
        args (array) arguments<proposalid, vote>
    """
    if args.view is None:
        if args.id is None:
            raise CodeSmellException("Missing proposal ID")
        if args.vote is None:
            raise CodeSmellException("Missing VOTE")
        if args.vote == 'yes':
            vote = 1
        else:
            vote = 0

    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME)

    if args.vote:
        response_dict = client.vote(proposal_id=args.id, vote=vote)
        print(response_dict)
    else:
        response_list = client.check_votes(proposal_id=args.view)
        print(response_list)
Пример #4
0
def do_default(args):
    """
    load a set of default code smells.

    Args:
        args (array) arguments
    """
    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=args.path)

    response = client.default()

    print("Response: {}".format(response))
Пример #5
0
def do_show(args):
    """
    list transaction of code smell family

    Args:
        args (array) arguments
    """
    if args.address is None:
        raise CodeSmellException ("Missing Transaction Address")

    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME)

    transaction = client.show(address=args.address)

    if len(transaction) == 0:
        raise CodeSmellException("No transaction found")
    else:
        pprint (transaction)
Пример #6
0
    def setUp(self):
        #get default values
        DISTRIBUTION_NAME = 'suserum-code_smell'
        HOME = os.getenv('SAWTOOTH_HOME')
        DEFAULT_URL = 'http://127.0.0.1:8008'

        #get user key
        username = getpass.getuser()
        home = os.path.expanduser("~")
        key_dir = os.path.join(home, ".sawtooth", "keys")
        keyfile = '{}/{}.priv'.format(key_dir, username)

        self.client = CodeSmellClient(base_url=DEFAULT_URL,
                                      keyfile=keyfile,
                                      work_path=HOME)

        #get test txn_id
        self.txn = self.client.list()
        for entry in self.txn.keys():
            self.txn_id = entry
            break
Пример #7
0
def do_list(args):
    """
    list transactions of code smell family

    Args:
        args (array) arguments
    """
    #verify that we shave the right type
    if args.type is not None and args.type not in ('code_smell', 'proposal', 'vote', 'config'):
        raise CodeSmellException("Incorrect Transaction Type")

    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME)

    transactions = client.list(txn_type=args.type, active=args.active)

    if len(transactions) == 0:
        raise CodeSmellException("No transactions found")
    else:
        print (transactions)
Пример #8
0
def do_proposal(args):
    """
    propose new metric for the code smell family

    Args:
        args (array) arguments
    """

    if args.propose is None:
        raise CodeSmellException("Missing code smells")

    url = _get_url(args)
    keyfile = _get_keyfile(args)
    client = CodeSmellClient(base_url=url, keyfile=keyfile, work_path=HOME)

    #parse input into a dict
    code_smells = {}
    str_input = args.propose
    code_smells = dict(code_smell.split("=") for code_smell in str_input.split(","))

    response = client.propose(code_smells=code_smells)

    print("Response: {}".format(response))
Пример #9
0
        api = line
    line_num += 1
for line in suse.split('\n'):
    if 'approval_treshold=' in line:
        approval_treshold = int(line.split('=')[1])
    if 'proposal_active_days=' in line:
        proposal_active_days = int(line.split('=')[1])

#get key
username = getpass.getuser()
home = os.path.expanduser("~")
key_dir = os.path.join(home, ".sawtooth", "keys")
keyfile = '{}/{}.priv'.format(key_dir, username)

client = CodeSmellClient(base_url="http://127.0.0.1:" + str(api),
                         keyfile=keyfile,
                         work_path=prj_path)

#check if enough 'yes' votes to pass proposal
print('pid:', proposal_id, api)
votes = client.check_votes(proposal_id)
if not votes:
    sys.exit(0)
yes_votes = votes.count(1)

print('VOTES:', votes, (yes_votes >= approval_treshold))
if yes_votes >= approval_treshold:
    print('pass by vote threshold pass', yes_votes)
    client.update_proposal(proposal_id, 1, repo_id)
    deleteSelfFromCron(proposal_id, proposal_date, prj_path)
    sys.exit(0)