Ejemplo n.º 1
0
    def test_build_package_package_created(self, pip_mock, echo_mock):
        # Arrange
        self.fs.CreateFile('nut_shell/shell.yml',
                           contents="""
shell:
    name: nut_shell
    author: Chuck Norris
    email: [email protected]
    description: Save the world
    version: 1.0.0
    """)
        self.fs.CreateFile('nut_shell/datamodel/metadata.xml')
        self.fs.CreateFile('nut_shell/datamodel/datamodel.xml')
        self.fs.CreateFile('nut_shell/datamodel/shellconfig.xml')
        self.fs.CreateFile('nut_shell/src/driver.py')
        os.chdir('nut_shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        assertFileExists(self, 'dist/nut_shell.zip')
        echo_mock.assert_any_call(u'Shell package was successfully created:')
    def test_proper_error_message_displayed_when_shell_yml_missing(self, echo_mock):
        # Arrange
        self.fs.CreateFile('nut_shell/datamodel/datamodel.xml')
        os.chdir('nut_shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        echo_mock.assert_any_call(u'shell.yml file is missing')
    def test_proper_error_message_displayed_when_shell_yml_is_in_wrong_format(self, echo_mock):
        # Arrange
        self.fs.CreateFile('nut_shell/shell.yml', contents='WRONG YAML FORMAT')
        os.chdir('nut_shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        echo_mock.assert_any_call(u'shell.yml format is wrong')
Ejemplo n.º 4
0
    def test_proper_error_message_displayed_when_shell_yml_missing(
            self, echo_mock):
        # Arrange
        self.fs.CreateFile('nut_shell/datamodel/datamodel.xml')
        os.chdir('nut_shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        echo_mock.assert_any_call(u'shell.yml file is missing')
Ejemplo n.º 5
0
    def test_proper_error_message_displayed_when_shell_yml_is_in_wrong_format(
            self, echo_mock):
        # Arrange
        self.fs.CreateFile('nut_shell/shell.yml', contents='WRONG YAML FORMAT')
        os.chdir('nut_shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        echo_mock.assert_any_call(u'shell.yml format is wrong')
Ejemplo n.º 6
0
    def test_pack_layer_one_shell(self, pip_mock, secho_mock):
        # Arrange
        self.fs.CreateFile('cloudshell-L1-test/datamodel/datamodel.xml')
        os.chdir('cloudshell-L1-test')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        secho_mock.assert_any_call(
            "Packaging a L1 shell directly via shellfoundry is not supported.",
            fg="yellow")
Ejemplo n.º 7
0
    def test_tosca_based_shell_packager_called_when_shell_contains_tosca_meta_file(
            self, pack_mock):
        # Arrange
        self.fs.CreateFile('nut-shell/TOSCA-Metadata/TOSCA.meta',
                           contents='TOSCA-Meta-File-Version: 1.0 \n'
                           'CSAR-Version: 1.1 \n'
                           'Created-By: Anonymous \n'
                           'Entry-Definitions: shell-definition.yml')

        self.fs.CreateFile('nut-shell/shell-definition.yml',
                           contents='SOME SHELL DEFINITION')

        os.chdir('nut-shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        self.assertTrue(pack_mock.called)
    def test_build_package_package_created(self, echo_mock):
        # Arrange
        self.fs.CreateFile('nut_shell/shell.yml', contents="""
shell:
    name: nut_shell
    author: Chuck Norris
    email: [email protected]
    description: Save the world
    version: 1.0.0
    """)
        self.fs.CreateFile('nut_shell/datamodel/datamodel.xml')
        self.fs.CreateFile('nut_shell/datamodel/shellconfig.xml')
        self.fs.CreateFile('nut_shell/src/driver.py')
        os.chdir('nut_shell')

        command_executor = PackCommandExecutor()

        # Act
        command_executor.pack()

        # Assert
        assertFileExists(self, 'dist/nut_shell.zip')
        echo_mock.assert_any_call(u'Shell package was successfully created:')
def main(args):

    #
    # CLI
    #
    parser = ArgumentParser(description='create new TG release',
                            formatter_class=RawDescriptionHelpFormatter)
    parser.add_argument("-r", "--release", help="New release version")
    parser.add_argument("-m", "--message", help="New commit message")
    parsed_args = parser.parse_args(args)

    #
    # Write new version
    #
    with open("shell.yml", 'r') as f:
        shell = yaml.safe_load(f)
    shell['shell']['version'] = parsed_args.release
    with open("shell.yml", 'w') as f:
        yaml.safe_dump(shell, f, default_flow_style=False)

    with open("version.txt", 'w') as f:
        f.write(parsed_args.release)

    drivermetadata = ET.parse('src/drivermetadata.xml')
    driver = drivermetadata.getroot()
    driver.attrib['Version'] = parsed_args.release
    drivermetadata.write('src/drivermetadata.xml')

    #
    # Shellfoundry
    #
    PackCommandExecutor().pack()
    DistCommandExecutor().dist()
    InstallCommandExecutor().install()

    #
    # git
    #
    if parsed_args.message:
        repo = Repo('.')
        repo.git.add('.')
        repo.git.commit('-m version {}'.format(parsed_args.message))
        repo.git.push()
Ejemplo n.º 10
0
def dist():
    """
    Creates a deployable Shell which can be distributed to a production environment
    """
    PackCommandExecutor().pack()
    DistCommandExecutor().dist()
Ejemplo n.º 11
0
def install():
    """
    Installs the shell package into CloudShell
    """
    PackCommandExecutor().pack()
    InstallCommandExecutor().install()
Ejemplo n.º 12
0
def pack():
    """
    Creates a shell package
    """
    PackCommandExecutor().pack()
Ejemplo n.º 13
0
def generate():
    """
    Generates Python driver data model to be used in driver code
    """
    PackCommandExecutor().pack()
    GenerateCommandExecutor().generate()
Ejemplo n.º 14
0
def pack():
    """
    Pack the shell package.
    """
    PackCommandExecutor().pack()