Example #1
0
 def roles(self, uid):
     from fuelclient.objects.node import Node
     from fuelclient.objects.environment import Environment
     node = Node(uid)
     env = Environment(node.data['cluster'])
     facts = env.get_default_facts('deployment', [uid])
     return [f['role'] for f in facts]
Example #2
0
    def attributes(self, params):
        """Download current or default disk, network,
           configuration for some node:
                fuel node --node-id 2 --disk --default
                fuel node --node-id 2 --network --download \\
                --dir path/to/directory

           Upload disk, network, configuration for some node:
                fuel node --node-id 2 --network --upload
                fuel node --node-id 2 --disk --upload --dir path/to/directory
        """
        nodes = Node.get_by_ids(params.node)
        attribute_type = "interfaces" if params.network else "disks"
        attributes = []
        files = []
        if params.default:
            for node in nodes:
                default_attribute = node.get_default_attribute(attribute_type)
                file_path = node.write_attribute(
                    attribute_type,
                    default_attribute,
                    params.dir,
                    serializer=self.serializer
                )
                files.append(file_path)
                attributes.append(default_attribute)
            message = "Default node attributes for {0} were written" \
                      " to:\n{1}".format(attribute_type, "\n".join(files))
        elif params.upload:
            for node in nodes:
                attribute = node.read_attribute(
                    attribute_type,
                    params.dir,
                    serializer=self.serializer
                )
                node.upload_node_attribute(
                    attribute_type,
                    attribute
                )
                attributes.append(attribute)
            message = "Node attributes for {0} were uploaded" \
                      " from {1}".format(attribute_type, params.dir)
        else:
            for node in nodes:
                downloaded_attribute = node.get_attribute(attribute_type)
                file_path = node.write_attribute(
                    attribute_type,
                    downloaded_attribute,
                    params.dir,
                    serializer=self.serializer
                )
                attributes.append(downloaded_attribute)
                files.append(file_path)
            message = "Node attributes for {0} were written" \
                      " to:\n{1}".format(attribute_type, "\n".join(files))
        print(message)
Example #3
0
    def attributes(self, params):
        """Download current or default disk, network,
           configuration for some node:
                fuel node --node-id 2 --disk --default
                fuel node --node-id 2 --network --download \\
                --dir path/to/directory

           Upload disk, network, configuration for some node:
                fuel node --node-id 2 --network --upload
                fuel node --node-id 2 --disk --upload --dir path/to/directory
        """
        nodes = Node.get_by_ids(params.node)
        attribute_type = "interfaces" if params.network else "disks"
        attributes = []
        files = []
        if params.default:
            for node in nodes:
                default_attribute = node.get_default_attribute(attribute_type)
                file_path = node.write_attribute(
                    attribute_type,
                    default_attribute,
                    params.dir,
                    serializer=self.serializer
                )
                files.append(file_path)
                attributes.append(default_attribute)
            message = "Default node attributes for {0} were written" \
                      " to:\n{1}".format(attribute_type, "\n".join(files))
        elif params.upload:
            for node in nodes:
                attribute = node.read_attribute(
                    attribute_type,
                    params.dir,
                    serializer=self.serializer
                )
                node.upload_node_attribute(
                    attribute_type,
                    attribute
                )
                attributes.append(attribute)
            message = "Node attributes for {0} were uploaded" \
                      " from {1}".format(attribute_type, params.dir)
        else:
            for node in nodes:
                downloaded_attribute = node.get_attribute(attribute_type)
                file_path = node.write_attribute(
                    attribute_type,
                    downloaded_attribute,
                    params.dir,
                    serializer=self.serializer
                )
                attributes.append(downloaded_attribute)
                files.append(file_path)
            message = "Node attributes for {0} were written" \
                      " to:\n{1}".format(attribute_type, "\n".join(files))
        print(message)
Example #4
0
    def _get_one_node(params):
        """Ensures that only one node was passed in the command and returns it.

        :raises ArgumentException: When more than 1 node provided.
        """
        if len(params.node) > 1:
            raise error.ArgumentException(
                "You should select only one node to change.")

        return Node(params.node[0])
Example #5
0
 def delete_from_db(self, params):
     """To delete nodes from fuel db:
             fuel node --node-id 1 --delete-from-db
     """
     nodes = Node.get_by_ids(params.node)
     for node in nodes:
         node.delete()
     self.serializer.print_to_output(
         {}, "Nodes with id {0} has been deleted from fuel db.\n"
         "You should still delete node from cobbler".format(params.node))
Example #6
0
 def delete_from_db(self, params):
     """To delete nodes from fuel db:
             fuel node --node-id 1 --delete-from-db
     """
     nodes = Node.get_by_ids(params.node)
     for node in nodes:
         node.delete()
     self.serializer.print_to_output(
         {},
         "Nodes with id {0} has been deleted from fuel db.\n"
         "You should still delete node from cobbler".format(params.node))
Example #7
0
 def set(self, params):
     """Assign some nodes to environment with with specific roles:
             fuel --env 1 node set --node 1 --role controller
             fuel --env 1 node set --node 2,3,4 --role compute,cinder
     """
     env = Environment(params.env)
     nodes = Node.get_by_ids(params.node)
     roles = map(str.lower, params.role)
     env.assign(nodes, roles)
     self.serializer.print_to_output({}, "Nodes {0} with roles {1} "
                                     "were added to environment {2}".format(
                                         params.node, roles, params.env))
Example #8
0
 def set(self, params):
     """Assign some nodes to environment with with specific roles:
             fuel --env 1 node set --node 1 --role controller
             fuel --env 1 node set --node 2,3,4 --role compute,cinder
     """
     env = Environment(params.env)
     nodes = Node.get_by_ids(params.node)
     roles = map(str.lower, params.role)
     env.assign(nodes, roles)
     self.serializer.print_to_output(
         {},
         "Nodes {0} with roles {1} "
         "were added to environment {2}"
         .format(params.node, roles, params.env)
     )
Example #9
0
    def set_hostname(self, params):
        """To set node hostname:
                fuel node --node-id 1 --hostname ctrl-01
        """
        nodes = Node.get_by_ids(params.node)

        if len(nodes) > 1:
            raise error.ArgumentException(
                "You should select only one node to change hostname."
            )
        nodes[0].set({"hostname": params.hostname})
        self.serializer.print_to_output(
            {},
            "Hostname for node with id {0} has been changed to {1}."
            .format(params.node[0], params.hostname)
        )
Example #10
0
 def get_node_by_devops_node(self, devops_node, interface='admin'):
     interfaces = devops_node.interface_by_network_name(interface)
     for interface in interfaces:
         for node in FuelNode.get_all():
             if node._data['mac'] == interface.mac_address:
                 return NodeProxy(node, self)
 def get_node_by_devops_node(self, devops_node, interface='admin'):
     interfaces = devops_node.interface_by_network_name(interface)
     for interface in interfaces:
         for node in FuelNode.get_all():
             if node._data['mac'] == interface.mac_address:
                 return NodeProxy(node, self)