Ejemplo n.º 1
0
    def do_secgroup(self, args, arguments):
        """
        ::

            Usage:
                secgroup list [--cloud=CLOUD] [--tenant=TENANT]
                secgroup create [--cloud=CLOUD] [--tenant=TENANT] LABEL
                secgroup delete [--cloud=CLOUD] [--tenant=TENANT] LABEL
                secgroup rules-list [--cloud=CLOUD] [--tenant=TENANT] LABEL
                secgroup rules-add [--cloud=CLOUD] [--tenant=TENANT] LABEL FROMPORT TOPORT PROTOCOL CIDR
                secgroup rules-delete [--cloud=CLOUD] [--tenant=TENANT] LABEL FROMPORT TOPORT PROTOCOL CIDR
                secgroup -h | --help
                secgroup --version

            Options:
                -h                  help message
                --cloud=CLOUD       Name of the IaaS cloud e.g. india_openstack_grizzly.
                --tenant=TENANT     Name of the tenant, e.g. fg82.

            Arguments:
                LABEL         The label/name of the security group
                FROMPORT      Staring port of the rule, e.g. 22
                TOPORT        Ending port of the rule, e.g. 22
                PROTOCOL      Protocol applied, e.g. TCP,UDP,ICMP
                CIDR          IP address range in CIDR format, e.g., 129.79.0.0/16

            Description:
                security_group command provides list/add/delete
                security_groups for a tenant of a cloud, as well as
                list/add/delete of rules for a security group from a
                specified cloud and tenant.


            Examples:
                $ secgroup list --cloud india --tenant fg82
                $ secgroup rules-list --cloud india --tenant fg82 default
                $ secgroup create --cloud india --tenant fg82 webservice
                $ secgroup rules-add --cloud india --tenant fg82 webservice 8080 8088 TCP "129.79.0.0/16"

        """
        # pprint(arguments)

        cloud = arguments["--cloud"] or Default.get_cloud()

        if arguments["list"]:
            # if no arguments read default
            tenant = arguments["--tenant"] or Default.get("tenant")

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return
            if not tenant:
                Console.error("Default tenant not set!")
                return ""

            result = SecGroup.list(tenant, cloud)
            if result:
                print(result)
            else:
                Console.error(
                    "No Security Groups found in the cloudmesh database!")
            return ""

        elif arguments["create"]:
            # if no arguments read default
            tenant = arguments["--tenant"] or Default.get("tenant", cloud)
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return
            if not tenant:
                Console.error("Default tenant not set!")
                return ""

            # Create returns uuid of created sec-group
            uuid = SecGroup.create(label, cloud, tenant)

            if uuid:
                Console.ok("Created a new security group [{}] with UUID [{}]"
                           .format(label, uuid))
            else:
                Console.error("Exiting!")
            return ""

        elif arguments["delete"]:
            # if no arguments read default
            tenant = arguments["--tenant"] or Default.get("tenant", cloud)
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""
            if not tenant:
                Console.error("Default tenant not set!")
                return ""

            result = SecGroup.delete_secgroup(label, cloud, tenant)
            if result:
                print(result)
            else:
                Console.error("Security Group [{}, {}, {}] could not be "
                              "deleted".format(label, cloud, tenant))

            return ""

        elif arguments["rules-delete"]:
            # if no arguments read default
            cloud = arguments["--cloud"]
            tenant = arguments["--tenant"] or Default.get("tenant", cloud)

            label = arguments["LABEL"]
            from_port = arguments["FROMPORT"]
            to_port = arguments["TOPORT"]
            protocol = arguments["PROTOCOL"]
            cidr = arguments["CIDR"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""
            if not tenant:
                Console.error("Default tenant not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, tenant, cloud)
            if sec_group:
                # Get the rules
                result = SecGroup.delete_rule(sec_group, from_port, to_port,
                                              protocol, cidr)
                if result:
                    print(result)
                else:
                    Console.error(
                        "Rule [{} | {} | {} | {}] could not be deleted"
                        .format(from_port, to_port, protocol, cidr))

            return ""

        elif arguments["rules-list"]:
            # if no arguments read default
            tenant = arguments["--tenant"] or Default.get("tenant", cloud)
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""
            if not tenant:
                Console.error("Default tenant not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, tenant, cloud)
            if sec_group:
                # Get the rules
                result = SecGroup.get_rules(sec_group.uuid)
                print(result)
            else:
                Console.error(
                    "Security Group with label [{}], cloud [{}], and "
                    "tenant [{}] not found!"
                    .format(label, cloud, tenant))
                return ""

        elif arguments["rules-add"]:
            # if no arguments read default
            tenant = arguments["--tenant"] or Default.get("tenant", cloud)

            label = arguments["LABEL"]
            from_port = arguments["FROMPORT"]
            to_port = arguments["TOPORT"]
            protocol = arguments["PROTOCOL"]
            cidr = arguments["CIDR"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""
            if not tenant:
                Console.error("Default tenant not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, tenant, cloud)
            if sec_group:
                # Add rules to the security group
                SecGroup.add_rule(sec_group, from_port, to_port, protocol,
                                  cidr)
            else:
                Console.error(
                    "Security Group with label [{}], cloud [{}], and tenant [{"
                    "}] not found!".format(label, cloud, tenant))
                return ""

        # TODO: Add Implementation
        elif arguments["--version"]:
            Console.ok('Version: ')

        return ""
Ejemplo n.º 2
0
    def do_secgroup(self, args, arguments):
        """
        ::

            Usage:
                secgroup list [--cloud=CLOUD]
                secgroup create [--cloud=CLOUD] LABEL
                secgroup delete [--cloud=CLOUD] LABEL
                secgroup rules-list [--cloud=CLOUD] LABEL
                secgroup rules-add [--cloud=CLOUD] LABEL FROMPORT TOPORT PROTOCOL CIDR
                secgroup rules-delete [--cloud=CLOUD] [--all] LABEL [FROMPORT] [TOPORT] [PROTOCOL] [CIDR]
                secgroup refresh [--cloud=CLOUD]
                secgroup -h | --help
                secgroup --version

            Options:
                -h                  help message
                --cloud=CLOUD       Name of the IaaS cloud e.g. india_openstack_grizzly.

            Arguments:
                LABEL         The label/name of the security group
                FROMPORT      Staring port of the rule, e.g. 22
                TOPORT        Ending port of the rule, e.g. 22
                PROTOCOL      Protocol applied, e.g. TCP,UDP,ICMP
                CIDR          IP address range in CIDR format, e.g., 129.79.0.0/16

            Description:
                security_group command provides list/add/delete
                security_groups for a tenant of a cloud, as well as
                list/add/delete of rules for a security group from a
                specified cloud and tenant.


            Examples:
                secgroup list --cloud india
                secgroup rules-list --cloud=kilo default
                secgroup create --cloud=kilo webservice
                secgroup rules-add --cloud=kilo webservice 8080 8088 TCP 129.79.0.0/16
                secgroup rules-delete --cloud=kilo webservice 8080 8088 TCP 129.79.0.0/16
                secgroup rules-delete --all


        """
        # pprint(arguments)

        cloud = arguments["--cloud"] or Default.get_cloud()

        # if refresh ON, pull data from cloud to db
        if arguments["refresh"] or \
                Default.refresh():
            msg = "Refresh secgroup for cloud {:}.".format(cloud)
            if SecGroup.refresh(cloud):
                Console.ok("{:} ok".format(msg))
            else:
                Console.error("{:} failed".format(msg))

        # list all security-groups in cloud
        if arguments["list"]:
            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return

            result = SecGroup.list(cloud=cloud)
            if result:
                print(result)
            else:
                Console.error(
                    "No Security Groups found in the cloudmesh database!")
            return ""

        # Create a security-group
        elif arguments["create"]:
            # if no arguments read default
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return

            # Create returns uuid of created sec-group
            uuid = SecGroup.create(label, cloud)

            if uuid:
                Console.ok("Created a new security group [{}] with UUID [{}]"
                           .format(label, uuid))
            else:
                Console.error("Exiting!")
            return ""

        # Delete a security-group
        elif arguments["delete"]:
            # if no arguments read default
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            result = SecGroup.delete_secgroup(label, cloud)
            if result is not None:
                Console.ok("Security Group [{}] in cloud [{}] deleted successfully." \
                           .format(label, cloud))
            else:
                Console.error("Failed to delete Security Group [{}] in cloud [{}]"
                              .format(label, cloud))

            return ""

        # Delete security group rule
        elif arguments["rules-delete"]:
            # if no arguments read default
            cloud = arguments["--cloud"] or Default.get_cloud()

            label = arguments["LABEL"]
            from_port = arguments["FROMPORT"]
            to_port = arguments["TOPORT"]
            protocol = arguments["PROTOCOL"]
            cidr = arguments["CIDR"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, cloud)
            if sec_group:

                # delete all rules for secgroup
                if arguments["--all"]:
                    SecGroup.delete_all_rules(secgroup=sec_group)
                    return ""

                # Get the rules
                result = SecGroup.delete_rule(cloud=cloud,
                                              secgroup=sec_group,
                                              from_port=from_port,
                                              to_port=to_port,
                                              protocol=protocol,
                                              cidr=cidr)
                if result:
                    Console.ok(result)
                else:
                    Console.error(
                        "Rule [{} | {} | {} | {}] could not be deleted"
                            .format(from_port, to_port, protocol, cidr))

            return ""

        # list security group rules
        elif arguments["rules-list"]:
            # if no arguments read default
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, cloud)
            if sec_group:
                # Get the rules
                result = SecGroup.get_rules(sec_group.uuid)
                print(result)
            else:
                Console.error(
                    "Security Group with label [{}] in cloud [{}] not found!"
                        .format(label, cloud))
                return ""

        # add rule to security group
        elif arguments["rules-add"]:
            label = arguments["LABEL"]
            from_port = arguments["FROMPORT"]
            to_port = arguments["TOPORT"]
            protocol = arguments["PROTOCOL"]
            cidr = arguments["CIDR"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, cloud)
            if sec_group:
                # Add rules to the security group
                SecGroup.add_rule(cloud=cloud,
                                  secgroup=sec_group,
                                  from_port=from_port,
                                  to_port=to_port,
                                  protocol=protocol,
                                  cidr=cidr)
            else:
                Console.error(
                    "Security Group with label [{}] in cloud [{}] not found!".format(label, cloud))
                return ""

        # TODO: Add Implementation
        elif arguments["--version"]:
            Console.ok('Version: ')

        return ""
Ejemplo n.º 3
0
    def do_secgroup(self, args, arguments):
        """
        ::

            Usage:
                secgroup list [--cloud=CLOUD]
                secgroup create [--cloud=CLOUD] LABEL
                secgroup delete [--cloud=CLOUD] LABEL
                secgroup rules-list [--cloud=CLOUD] LABEL
                secgroup rules-add [--cloud=CLOUD] LABEL FROMPORT TOPORT PROTOCOL CIDR
                secgroup rules-delete [--cloud=CLOUD] [--all] LABEL [FROMPORT] [TOPORT] [PROTOCOL] [CIDR]
                secgroup refresh [--cloud=CLOUD]
                secgroup -h | --help
                secgroup --version

            Options:
                -h                  help message
                --cloud=CLOUD       Name of the IaaS cloud e.g. india_openstack_grizzly.

            Arguments:
                LABEL         The label/name of the security group
                FROMPORT      Staring port of the rule, e.g. 22
                TOPORT        Ending port of the rule, e.g. 22
                PROTOCOL      Protocol applied, e.g. TCP,UDP,ICMP
                CIDR          IP address range in CIDR format, e.g., 129.79.0.0/16

            Description:
                security_group command provides list/add/delete
                security_groups for a tenant of a cloud, as well as
                list/add/delete of rules for a security group from a
                specified cloud and tenant.


            Examples:
                secgroup list --cloud india
                secgroup rules-list --cloud=kilo default
                secgroup create --cloud=kilo webservice
                secgroup rules-add --cloud=kilo webservice 8080 8088 TCP 129.79.0.0/16
                secgroup rules-delete --cloud=kilo webservice 8080 8088 TCP 129.79.0.0/16
                secgroup rules-delete --all


        """
        # pprint(arguments)

        cloud = arguments["--cloud"] or Default.get_cloud()

        # if refresh ON, pull data from cloud to db
        if arguments["refresh"] or \
                Default.refresh():
            msg = "Refresh secgroup for cloud {:}.".format(cloud)
            if SecGroup.refresh(cloud):
                Console.ok("{:} ok".format(msg))
            else:
                Console.error("{:} failed".format(msg))

        # list all security-groups in cloud
        if arguments["list"]:
            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return

            result = SecGroup.list(cloud=cloud)
            if result:
                print(result)
            else:
                Console.error(
                    "No Security Groups found in the cloudmesh database!")
            return ""

        # Create a security-group
        elif arguments["create"]:
            # if no arguments read default
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return

            # Create returns uuid of created sec-group
            uuid = SecGroup.create(label, cloud)

            if uuid:
                Console.ok(
                    "Created a new security group [{}] with UUID [{}]".format(
                        label, uuid))
            else:
                Console.error("Exiting!")
            return ""

        # Delete a security-group
        elif arguments["delete"]:
            # if no arguments read default
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            result = SecGroup.delete_secgroup(label, cloud)
            if result is not None:
                Console.ok("Security Group [{}] in cloud [{}] deleted successfully." \
                           .format(label, cloud))
            else:
                Console.error(
                    "Failed to delete Security Group [{}] in cloud [{}]".
                    format(label, cloud))

            return ""

        # Delete security group rule
        elif arguments["rules-delete"]:
            # if no arguments read default
            cloud = arguments["--cloud"] or Default.get_cloud()

            label = arguments["LABEL"]
            from_port = arguments["FROMPORT"]
            to_port = arguments["TOPORT"]
            protocol = arguments["PROTOCOL"]
            cidr = arguments["CIDR"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, cloud)
            if sec_group:

                # delete all rules for secgroup
                if arguments["--all"]:
                    SecGroup.delete_all_rules(secgroup=sec_group)
                    return ""

                # Get the rules
                result = SecGroup.delete_rule(cloud=cloud,
                                              secgroup=sec_group,
                                              from_port=from_port,
                                              to_port=to_port,
                                              protocol=protocol,
                                              cidr=cidr)
                if result:
                    Console.ok(result)
                else:
                    Console.error(
                        "Rule [{} | {} | {} | {}] could not be deleted".format(
                            from_port, to_port, protocol, cidr))

            return ""

        # list security group rules
        elif arguments["rules-list"]:
            # if no arguments read default
            label = arguments["LABEL"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, cloud)
            if sec_group:
                # Get the rules
                result = SecGroup.get_rules(sec_group.uuid)
                print(result)
            else:
                Console.error(
                    "Security Group with label [{}] in cloud [{}] not found!".
                    format(label, cloud))
                return ""

        # add rule to security group
        elif arguments["rules-add"]:
            label = arguments["LABEL"]
            from_port = arguments["FROMPORT"]
            to_port = arguments["TOPORT"]
            protocol = arguments["PROTOCOL"]
            cidr = arguments["CIDR"]

            # If default not set, terminate
            if not cloud:
                Console.error("Default cloud not set!")
                return ""

            # Get the security group
            sec_group = SecGroup.get(label, cloud)
            if sec_group:
                # Add rules to the security group
                SecGroup.add_rule(cloud=cloud,
                                  secgroup=sec_group,
                                  from_port=from_port,
                                  to_port=to_port,
                                  protocol=protocol,
                                  cidr=cidr)
            else:
                Console.error(
                    "Security Group with label [{}] in cloud [{}] not found!".
                    format(label, cloud))
                return ""

        # TODO: Add Implementation
        elif arguments["--version"]:
            Console.ok('Version: ')

        return ""