def rename_instance()

in tools/jenkins-slave-creation-unix/scripts/deploy/slave-autoconnect.py [0:0]


def rename_instance(name: str):
    logging.info('Renaming instance to {}'.format(name))
    tok_req = urllib.request.Request(url="http://169.254.169.254/latest/api/token")
    tok_req.headers = { "X-aws-ec2-metadata-token-ttl-seconds": "60" }
    tok_req.method = "PUT"
    token_response = urllib.request.urlopen(tok_req)
    token = token_response.read().decode('utf-8')

    req = urllib.request.Request(url="http://169.254.169.254/latest/dynamic/instance-identity/document")
    req.headers = { "X-aws-ec2-metadata-token": token }
    response = urllib.request.urlopen(req)
    instance_info = response.read().decode('utf-8')
    logging.debug('Instance info: {}'.format(instance_info))

    region_match = re.search(REGION_REGEX, instance_info)
    instance_id_match = re.search(INSTANCE_ID_REGEX, instance_info)

    if not region_match or not instance_id_match:
        raise RuntimeError("Unable to determine instance id or region. Instance info: {}".format(instance_info))

    region = region_match.group(1)
    instance_id = instance_id_match.group(1)

    logging.debug('Instance region: {}   Instance id: {}'.format(region, instance_id))

    ec2 = boto3.resource('ec2', region_name=region)
    ec2.create_tags(
        DryRun=False,
        Resources=[
            instance_id
        ],
        Tags=[
            {
                'Key': 'Name',
                'Value': name
            },
        ]
    )