def install_component(namenode, resourcemanager):
    '''Install only if nn and rm have sent their FQDNs.'''
    if namenode.namenodes() and resourcemanager.resourcemanagers():
        set_state('components.installed')
        options = layer.options('apache-bigtop-base')
        components = options.get("bigtop_component_list")
        hookenv.status_set('maintenance', 'installing {}'.format(components))
        nn_fqdn = namenode.namenodes()[0]
        rm_fqdn = resourcemanager.resourcemanagers()[0]
        bigtop = Bigtop()
        hosts = {'namenode': nn_fqdn, 'resourcemanager': rm_fqdn}
        bigtop.install_component(RM=rm_fqdn, NN=nn_fqdn)
        for component in components.split():
            try:
                for port in get_layer_opts().exposed_ports(component):
                    hookenv.open_port(port)
            except AttributeError:
                hookenv.log("Not opening ports for component {}".format(component))
        hookenv.status_set('active', 'ready')
    else:
        hookenv.status_set('waiting',
                           'waiting for namenode and resource manager to become ready')
def install_component(namenode, resourcemanager):
    '''Install only if nn and rm have sent their FQDNs.'''
    if namenode.namenodes() and resourcemanager.resourcemanagers():
        set_state('components.installed')
        options = layer.options('apache-bigtop-base')
        components = options.get("bigtop_component_list")
        hookenv.status_set('maintenance', 'installing {}'.format(components))
        nn_fqdn = namenode.namenodes()[0]
        rm_fqdn = resourcemanager.resourcemanagers()[0]
        bigtop = Bigtop()
        hosts = {'namenode': nn_fqdn, 'resourcemanager': rm_fqdn}
        bigtop.install_component(RM=rm_fqdn, NN=nn_fqdn)
        for component in components.split():
            try:
                for port in get_layer_opts().exposed_ports(component):
                    hookenv.open_port(port)
            except AttributeError:
                hookenv.log(
                    "Not opening ports for component {}".format(component))
        hookenv.status_set('active', 'ready')
    else:
        hookenv.status_set(
            'waiting',
            'waiting for namenode and resource manager to become ready')