コード例 #1
0
def node_create(request_data, op_ctx: ctx.OperationContext):
    """Request handler for node create operation.

    Required data: cluster_name, network_name
    Optional data and default values: org_name=None, ovdc_name=None,
        num_nodes=1, num_cpu=None, mb_memory=None, storage_profile_name=None,
        template_name=default, template_revision=default,
        ssh_key=None, rollback=True, enable_nfs=False,

    (data validation handled in broker)

    :return: Dict
    """
    vcd_broker = VcdBroker(op_ctx)
    return vcd_broker.create_nodes(data=request_data)
コード例 #2
0
    def invoke(self, op):
        """Invoke right broker(s) to perform the operation requested.

        Might result in further (pre/post)processing on the request/result(s).


        Depending on the operation requested, this method may do one or more
        of below mentioned points.
        1. Extract and construct the relevant params for the operation.
        2. Choose right broker to perform the operation/method requested.
        3. Scan through available brokers to aggregate (or) filter results.

        :param CseOperation op: Operation to be performed by one of the
            brokers.

        :return result: result of the operation.

        :rtype: dict
        """
        result = {}
        self.is_ovdc_present_in_request = bool(
            self.req_spec.get(RequestKey.OVDC_NAME))  # noqa: E501

        if op == CseOperation.CLUSTER_CONFIG:
            cluster_spec = \
                {'cluster_name': self.req_spec.get(RequestKey.CLUSTER_NAME)}
            result = self._get_cluster_config(**cluster_spec)
        elif op == CseOperation.CLUSTER_CREATE:
            # TODO(ClusterSpec) Create an inner class "ClusterSpec"
            #  in abstract_broker.py and have subclasses define and use it
            #  as instance variable.
            #  Method 'Create_cluster' in VcdBroker and PksBroker should take
            #  ClusterSpec either as a param (or)
            #  read from instance variable (if needed only).
            cluster_spec = {
                'cluster_name':
                self.req_spec.get(RequestKey.CLUSTER_NAME),
                'vdc_name':
                self.req_spec.get(RequestKey.OVDC_NAME),
                'org_name':
                self.req_spec.get(RequestKey.ORG_NAME),
                'node_count':
                self.req_spec.get(RequestKey.NUM_WORKERS),
                'storage_profile':
                self.req_spec.get(
                    RequestKey.STORAGE_PROFILE_NAME),  # noqa: E501
                'network_name':
                self.req_spec.get(RequestKey.NETWORK_NAME),
                'template':
                self.req_spec.get(RequestKey.TEMPLATE_NAME),
            }
            result = self._create_cluster(**cluster_spec)
        elif op == CseOperation.CLUSTER_DELETE:
            cluster_spec = \
                {'cluster_name': self.req_spec.get(RequestKey.CLUSTER_NAME)}
            result = self._delete_cluster(**cluster_spec)
        elif op == CseOperation.CLUSTER_INFO:
            cluster_spec = \
                {'cluster_name': self.req_spec.get(RequestKey.CLUSTER_NAME)}
            result = self._get_cluster_info(**cluster_spec)[0]
        elif op == CseOperation.CLUSTER_LIST:
            result = self._list_clusters()
        elif op == CseOperation.CLUSTER_RESIZE:
            cluster_spec = {
                'cluster_name': self.req_spec.get(RequestKey.CLUSTER_NAME),
                'node_count': self.req_spec.get(RequestKey.NUM_WORKERS)
            }
            result = self._resize_cluster(**cluster_spec)
        elif op == CseOperation.NODE_CREATE:
            # Currently node create is a vCD only operation.
            broker = VcdBroker(self.tenant_auth_token, self.req_spec)
            result = broker.create_nodes()
        elif op == CseOperation.NODE_DELETE:
            # Currently node delete is a vCD only operation.
            broker = VcdBroker(self.tenant_auth_token, self.req_spec)
            result = broker.delete_nodes()
        elif op == CseOperation.NODE_INFO:
            cluster_name = self.req_spec.get(RequestKey.CLUSTER_NAME)
            node_name = self.req_spec.get(RequestKey.NODE_NAME)
            # Currently node info is a vCD only operation.
            broker = VcdBroker(self.tenant_auth_token, self.req_spec)
            result = broker.get_node_info(cluster_name, node_name)

        return result