예제 #1
0
 def setup_state_obj(self, dev, state):
     state.obj = objects.Tag(
         testlib.random_name(),
         color='color1',
         comments='My new tag',
     )
     dev.add(state.obj)
예제 #2
0
파일: predefined.py 프로젝트: cchheda1/PAN
    def _parse_tag_xml(self, xml):
        """parse the xml into actual objects and store them in the dicts"""

        for elm in xml:
            obj = objects.Tag()
            obj.refresh(xml=elm)
            self.tag_objects[obj.name] = obj
예제 #3
0
def create_object(**kwargs):
    if kwargs['addressobject']:
        newobject = objects.AddressObject(
            name=kwargs['addressobject'],
            value=kwargs['address'],
            type=kwargs['address_type'],
            description=kwargs['description'],
            tag=kwargs['tag_name']
        )
        if newobject.type and newobject.value:
            return newobject
        else:
            return False
    elif kwargs['addressgroup']:
        newobject = objects.AddressGroup(
            name=kwargs['addressgroup'],
            static_value=kwargs['static_value'],
            dynamic_value=kwargs['dynamic_value'],
            description=kwargs['description'],
            tag=kwargs['tag_name']
        )
        if newobject.static_value or newobject.dynamic_value:
            return newobject
        else:
            return False
    elif kwargs['serviceobject']:
        newobject = objects.ServiceObject(
            name=kwargs['serviceobject'],
            protocol=kwargs['protocol'],
            source_port=kwargs['source_port'],
            destination_port=kwargs['destination_port'],
            tag=kwargs['tag_name']
        )
        if newobject.protocol and newobject.destination_port:
            return newobject
        else:
            return False
    elif kwargs['servicegroup']:
        newobject = objects.ServiceGroup(
            name=kwargs['servicegroup'],
            value=kwargs['services'],
            tag=kwargs['tag_name']
        )
        if newobject.value:
            return newobject
        else:
            return False
    elif kwargs['tag_name']:
        newobject = objects.Tag(
            name=kwargs['tag_name'],
            color=kwargs['color'],
            comments=kwargs['description']
        )
        if newobject.name:
            return newobject
        else:
            return False
    else:
        return False
예제 #4
0
 def create_dependencies(self, dev, state):
     state.tags = [
         objects.Tag(testlib.random_name(),
                     color='color{0}'.format(x),
                     comments=testlib.random_name())
         for x in range(1, 5)
     ]
     for x in state.tags:
         dev.add(x)
         x.create()
예제 #5
0
 def create_dependencies(self, dev, state):
     state.tag = None
     state.services = [
         objects.ServiceObject(
             testlib.random_name(),
             'tcp' if x % 2 == 0 else 'udp',
             destination_port=2000 + x,
             description='Service {0}'.format(x))
         for x in range(4)
     ]
     for x in state.services:
         dev.add(x)
         x.create()
     state.tag = objects.Tag(testlib.random_name(), 'color5')
     dev.add(state.tag)
     state.tag.create()
def pan_tags(pan_fw, tag_names=[]):
    """ Returns a list of PAN tag objects. It will take a list of tag names and add them to exising tags """
    current_tags = pan_objs.Tag.refreshall(pan_fw, add=False)
    current_tag_names = [t.name for t in current_tags]
    new_tags = list(set(tag_names).difference(set(current_tag_names)))
    logger.debug('Supplied tags:{}'.format(tag_names))
    new_pan_tags = [pan_objs.Tag(name=t) for t in new_tags]
    # Add current and new tag objects to pan_fw object
    if new_pan_tags:
        logger.debug('Found {:d}'.format(len(new_tags)))
        logger.debug('Adding tags:{}'.format(new_tags))
        tags_to_be_added = current_tags + new_pan_tags
        for pan_tag in tags_to_be_added:
            pan_fw.add(pan_tag)
        #tags_to_be_added[0].create_similar()
        #tags_to_be_added[0].apply_similar()
        return tags_to_be_added
    else:
        logger.debug('All supplied tags already exist; no new tags added')
        return current_tags
예제 #7
0
def getSA_JSON(url):
    headers = {
        'accept': "application/json",
        'content-type': "application/json",
        'cache-control': "no-cache"
        }

    return requests.request("GET", url, headers=headers, auth=(tufin_user, tufin_pass), verify=False).json()


#Main
if __name__ == '__main__':
    #Grab the arguments
    options = parse_args()
    #Go through Pano
    print "Connecting to Firewall through Panorama"
    (fw, pano) = pano_connect()
    # fw = fw_connect()
    if options.remove:
        print "Are you sure you want to remove?"
        resp = raw_input("Type YES in all caps: ")
        if resp == 'YES':
            remove_all()
        else:
            print "No Go."
    else:
        print "Adding Tufin Tag"
        fw.add(objects.Tag(tufin_tag, 'orange', 'Converted Object')).create()
        print "Converting Objects"
        process_objects(fetch_objects(options.device))
def main():
    argument_spec = dict(ip_address=dict(required=True),
                         username=dict(default='admin'),
                         password=dict(no_log=True),
                         api_key=dict(no_log=True),
                         name=dict(type='str', required=True),
                         color=dict(choices=COLOR_NAMES),
                         comments=dict(type='str'),
                         device_group=dict(type='str'),
                         vsys=dict(type='str', default='vsys1'),
                         state=dict(default='present',
                                    choices=['present', 'absent']),
                         commit=dict(type='bool', default=True))

    module = AnsibleModule(argument_spec=argument_spec,
                           supports_check_mode=False)

    if not HAS_LIB:
        module.fail_json(
            msg='pan-python and pandevice are required for this module.')

    ip_address = module.params['ip_address']
    username = module.params['username']
    password = module.params['password']
    api_key = module.params['api_key']
    name = module.params['name']
    color = module.params['color']
    comments = module.params['comments']
    device_group = module.params['device_group']
    vsys = module.params['vsys']
    state = module.params['state']
    commit = module.params['commit']

    changed = False

    try:
        device = base.PanDevice.create_from_device(ip_address,
                                                   username,
                                                   password,
                                                   api_key=api_key)

        if isinstance(device, firewall.Firewall):
            device.vsys = vsys

        if device_group:
            if device_group.lower() == 'shared':
                device_group = None
            else:
                if not get_devicegroup(device, device_group):
                    module.fail_json(msg='Could not find {} device group.'.
                                     format(device_group))

        if state == 'present':
            existing_obj = find_object(device, name, objects.Tag, device_group)
            color_id = objects.Tag.color_code(color) if color else None
            new_obj = objects.Tag(name=name, color=color_id, comments=comments)

            if not existing_obj:
                add_object(device, new_obj, device_group)
                new_obj.create()
                changed = True
            elif not existing_obj.equal(new_obj):
                existing_obj.color = objects.Tag.color_code(color)
                existing_obj.comments = comments
                existing_obj.apply()
                changed = True

        elif state == 'absent':
            existing_obj = find_object(device, name, objects.Tag, device_group)

            if existing_obj:
                existing_obj.delete()
                changed = True

        if commit and changed:
            perform_commit(module, device, device_group)

    except PanDeviceError as e:
        module.fail_json(msg=e.message)

    module.exit_json(changed=changed)